我在三星Galaxy S i9000上进行测试。
int sampleRate = 44100;
int bufferSize = AudioRecord.getMinBufferSize(sampleRate,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_8BIT);
返回-2 ERROR_BAD_VALUE
。
本机采样率为44100Hz,由
返回AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_SYSTEM)。
我尝试将sampleRate设置为1000,8000,22100和44100.我也尝试将AudioFormat.CHANNEL_IN_MONO
更改为AudioFormat.CHANNEL_CONFIGURATION_MONO
。我还尝试了STEREO
(IN_STEREO
和CONFIGURATION_STEREO
)。我也尝试过16位编码而不是8位。
更新:我的清单有AUDIO_RECORD
权限。
结果我一直得-2。为什么会这样?
答案 0 :(得分:17)
从平台源文件AudioRecord.java:
static public int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat) {
...
// PCM_8BIT is not supported at the moment
if (audioFormat != AudioFormat.ENCODING_PCM_16BIT) {
loge("getMinBufferSize(): Invalid audio format.");
return AudioRecord.ERROR_BAD_VALUE;
}
...
}
看起来您的选择是16位还是没有。 :\
答案 1 :(得分:0)
在模拟器中,它将始终返回-2。使用相同的代码,它可以在真正的移动设备上使用。