【发布时间】:2014-02-20 15:48:19
【问题描述】:
我为 Android 开发了一个游戏,它使用 Audio Record 来获取麦克风输入。
你可以看一眼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;
}
我最初在我的手机 (Samsung Galaxy Vibrant) 上对其进行了测试,效果很好……但今天我在三星 Galaxy Ace 上对其进行了测试,但采样率不起作用……
有什么想法吗?
【问题讨论】:
-
当我调用 recorder = new AudioRecord (MediaRecorder.AudioSource.MIC,rate,AudioFormat.CHANNEL_CONFIGURATION_MONO,AudioFormat.ENCODING_PCM_16BIT,bufferSize);使用前一个函数给出的速率,它会抛出一个错误......我这里没有确切的错误......但问题是它没有记录任何东西......
-
@progjose 您应该查看 Logcat 以获取有关您的错误的更多信息。重要的是要知道记录器实例是否为“null”(这意味着您正在使用不受支持的采样率或通道)或者记录器实例是否在内部未初始化(并且您的代码应该在调用 startRecording() 时抛出 IllegalStateException ..) .一旦你知道导致你的应用程序崩溃的异常,你就会有不同的解决方案。采用。
标签: android audiorecord sample-rate