我的程序记录麦克风有问题。有时当我运行它时,我有以下警告,并且实际上没有录制声音:
12-14 11:17:50.660: W/AudioRecord(1857): obtainBuffer timed out (is the CPU pegged?) user=00000000, server=00000000
根据我的发现,其他问题与AudioTrack
解释了here和here。但是,对我而言,AudioRecord
无法正常工作。我知道无论出于何种原因都无法创建缓冲区。我开始录制过程时会出现警告:recorder.startRecording();
当我使用内置麦克风作为输入时,有时会出现此问题,但通常在使用Bluetooth
耳机作为输入时。以下是我使用Bluetooth
麦克风作为输入的代码:
audioManage = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
if (!audioManage.isBluetoothScoOn()) {
audioManage.setBluetoothScoOn(true);
audioManage.startBluetoothSco();
audioStreaming = new AudioStreaming();
} else {
audioManage.startBluetoothSco();
audioStreaming = new AudioStreaming();
}
如何强制创建缓冲区?
信息:我使用的是Android 3.0,我在Xoom平板电脑上测试了该程序。
编辑:
我刚刚意识到我也遇到了这个错误:
12-14 12:13:12.500: E/AudioPostProcessor(2541): Error reading from audio in: Connection timed out
仅当程序未使用蓝牙时。而且我还没有找到关于这个主题的任何内容......
答案 0 :(得分:0)
尝试使用大于minSize的缓冲区并降低采样率。该消息通常意味着内核级别有些问题,比如错误的ALSA音频驱动程序集成,但我不知道Xoom是否会遇到这种情况。所以,祝你好运!
答案 1 :(得分:0)