zoukankan      html  css  js  c++  java
  • android AudioRecorder简单心得

    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而没有释放导致的。
    其他错误都可以在网络上找到答案。



  • 相关阅读:
    黑客术语1
    leetcode笔记--3 Niim game
    台湾ML笔记--1.2 formalize the learning probelm
    台湾ML笔记--1.1什么时候适合使用ML
    leetcode笔记--2 reverse string
    leetcode笔记--1 two-sum
    数据挖掘导论笔记1
    python基础----ipython快捷键
    记录新的开始
    编译器错误消息: CS1617: 选项“6”对 /langversion 无效
  • 原文地址:https://www.cnblogs.com/james1207/p/3333765.html
Copyright © 2011-2022 走看看