android AudioRecorder简单心得分享

时间:2021-12-13 08:23:46 

1.如何创建一个有效的AudioRecorder实例
Android各种设备的采样频率不同,输入的声道数也不同,如果采用固定的采样频率和声道数,那么得到的AudioRecorder不一定能够正常初始化。
为了正常使用,需要尝试各种不同的参数,得到在此设备上可以用的AudioRecorder实例。代码如下:


private void createAudioRecord() {  
           for (int sampleRate : new int[]{44100, 8000, 11025, 16000, 22050, 32000,  
            47250, 48000}) {  
        for (short audioFormat : new short[]{  
                AudioFormat.ENCODING_PCM_16BIT,  
                AudioFormat.ENCODING_PCM_8BIT}) {  
            for (short channelConfig : new short[]{  
                    AudioFormat.CHANNEL_IN_MONO,  
                    AudioFormat.CHANNEL_IN_STEREO}) {  

                // Try to initialize  
                try {  
                    recBufSize = AudioRecord.getMinBufferSize(sampleRate,  
                            channelConfig, audioFormat);  

                    if (recBufSize < 0) {  
                        continue;  
                    }  

                    audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,  
                            sampleRate, channelConfig, audioFormat,  
                            recBufSize * 2);  

                    if (audioRecord.getState() == AudioRecord.STATE_INITIALIZED) {  

                        return;  
                    }  

                    audioRecord.release();  
                    audioRecord = null;  
                } catch (Exception e) {  
                    // Do nothing  
                }  
            }  
        }  
    }  

    throw new IllegalStateException(  
            "getInstance() failed : no suitable audio configurations on this device.");  
}


2.常见错误
1.有些设备上面,即使你得到了有效的AudioRecorder实例,在audioRecord.startRecording()的时候还会报ERROR_BAD_VALUE错误。
这有可能是你使用了AudioManager而没有释放导致的。
其他错误都可以在网络上找到答案。

标签:android,AudioRecorder
0
投稿

猜你喜欢

  • Java使用BigDecimal进行高精度计算的示例代码

    2023-03-25 10:35:43
  • IDEA高效使用设置指南

    2023-10-30 01:39:37
  • Java生成和解析XML格式文件和字符串的实例代码

    2023-01-25 08:22:44
  • java高级用法之注解和反射讲义

    2023-10-08 14:40:16
  • Spring Cloud Gateway重试机制的实现

    2023-11-06 01:32:59
  • Java 对HashMap进行排序的三种常见方法

    2022-11-04 19:02:10
  • 一文带你彻底理解Java序列化和反序列化

    2021-12-23 05:24:12
  • spring boot validation参数校验实例分析

    2023-02-03 02:50:38
  • SpringCloud消息总线Bus配置中心实现过程解析

    2023-02-14 10:05:18
  • Android控件之CheckBox、RadioButton用法实例分析

    2021-06-01 06:31:26
  • Android 7.0新特性详解

    2022-10-10 07:11:56
  • C# Dockpanel入门基础必看篇

    2023-02-24 18:50:42
  • Java类获取Spring中bean的5种方式

    2022-03-11 06:23:39
  • maven无法依赖spring-cloud-stater-zipkin的解决方案

    2023-09-12 01:54:51
  • java启动线程的3种方式对比分析

    2023-12-17 08:38:41
  • C#中try...catch的使用与常见面试题分享

    2022-10-22 16:30:35
  • C语言入门篇--初识指针和指针变量

    2022-05-31 06:10:45
  • 从Python程序中访问Java类的简单示例

    2022-02-19 08:53:13
  • MyBatis-Plus结合Layui实现分页方法

    2023-07-10 13:23:09
  • Activity透明/半透明效果的设置transparent(两种实现方法)

    2022-11-22 00:21:27
  • asp之家 软件编程 m.aspxhome.com