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而沒有釋放導致的。
其他錯誤都可以在網路上找到答案。