AudioRecord.read() 方法在 Android 4.3+ 上无限期阻塞

AudioRecord.read() method blocks indefinitely on Android 4.3+

下一个序列 AudioRecord.read() 方法在 Android 4.3+:

上无限期阻塞
1) Create Audio record object in first activity.
2) start(), read(), stop(), release()
3) Open second Activity
4) Create Audio record object in second activity.
5) start(), read() <- "read" method blocks indefinitely, and i get this warnings in LogCat:

日志猫: 01-06 12:29:45.797: W/AudioRecord(20225): 死 IAudioRecord,从 start() 创建一个新的 01-06 12:29:45.799: I/AudioFlinger(185): AudioFlinger 的线程 0xb3060000 准备运行 01-06 12:29:45.805: W/AudioPolicyManager(185): releaseInput() 释放未知输入 1276

一些代码:

int min_buff_size = AudioRecord.getMinBufferSize(44100,
                    AudioFormat.CHANNEL_IN_MONO,
                    AudioFormat.ENCODING_PCM_16BIT);

            AudioRecord recorder = new AudioRecord(AudioSource.MIC, 
                    read_samplerate, 
                    AudioFormat.CHANNEL_IN_MONO,
                    AudioFormat.ENCODING_PCM_16BIT, 
                    min_buff_size);

如何解决这个问题?

您的问题可能是每次使用后没有释放录音导致的。要解决您的问题,您可以按照以下步骤操作:

  1. 重新启动 phone 启动时不要 运行 任何东西
  2. 添加代码以在您想要停止的地方释放您的音频记录,例如onPause().

    audiorecord.stop();

    audiorecord.release();

  3. 运行再测试

希望对您有所帮助。