我开发了一款Android游戏,它使用音频记录来获取麦克风输入。
您可以浏览https://play.google.com/store/apps/details?id=fixappmedia.micro
问题是我正在使用以下功能来获取手机上的采样率:
public int getValidSampleRates() {
int r=8000;
for (int rate : new int[] {8000,11025,16000,22050,44100}) { // add the rates you wish to check against
int bufferSize = AudioRecord.getMinBufferSize(rate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
if (bufferSize > 0) {
r= rate;
}
}
return r;
}
我最初在我的手机(三星Galaxy Vibrant)上进行了测试,效果非常好......但今天我在三星Galaxy Ace上进行了测试,采样率无效......
关于为什么的任何想法?
答案 0 :(得分:1)
我是录音应用程序(Hi-Q MP3录音机)的开发者,我发现所有手机都支持44100 Hz,48000 Hz或两者兼而有之。
查看您的代码,您错过了48000.
答案 1 :(得分:1)
采样率以赫兹表示。 44100Hz是目前唯一可以保证在所有设备上工作的速率,但其他速率如22050,16000和11025可能适用于某些设备。
另请注意,您使用的是根据文档http://developer.android.com/reference/android/media/AudioFormat.html
弃用的AudioFormat.CHANNEL_CONFIGURATION_MONO祝你好运此常量在API级别5中已弃用。请改用CHANNEL_OUT_MONO或CHANNEL_IN_MONO