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
投稿

猜你喜欢

  • Android RecyclerView选择多个item的实现代码

    2022-06-09 10:56:56
  • Android通过原生APi获取所在位置的经纬度

    2022-11-12 17:56:14
  • Java链表(Linked List)基本原理与实现方法入门示例

    2021-10-12 05:49:14
  • Java编程基本概念

    2023-09-07 07:15:50
  • 深入学习java位运算的基础知识

    2021-06-01 07:10:40
  • 简单了解Java方法的定义和使用实现详解

    2023-10-30 16:12:46
  • VS2015为console.readkey添加代码片段的方法

    2023-11-15 05:23:41
  • list集合去除重复对象的实现

    2022-10-16 23:02:42
  • Java中避免NullPointerException的方法总结

    2021-08-29 08:09:24
  • Android ViewPager无限循环滑动并可自动滚动完整实例

    2022-09-09 18:26:55
  • java向文件中追加内容与读写文件内容源码实例代码

    2021-11-15 11:45:13
  • Android设计模式之单例模式详解

    2022-03-12 16:51:47
  • 一文带你入门SpringMVC的配置与使用

    2021-06-24 12:30:52
  • 腾讯云部署javaWeb项目的实现步骤

    2023-11-05 18:03:29
  • 解决Springboot2.1.x配置Activiti7单独数据源问题

    2022-07-28 02:24:04
  • Java字节与字符流永久存储json数据

    2022-12-27 21:10:13
  • C#实现异步GET的方法

    2022-08-17 11:52:55
  • Mybatis-plus实现主键自增和自动注入时间的示例代码

    2022-11-05 00:22:51
  • 详解Java8中Optional的常见用法

    2022-04-30 14:32:21
  • Java枚举详解及使用实例(涵盖了所有典型用法)

    2023-06-29 23:17:55
  • asp之家 软件编程 m.aspxhome.com