Android - 音频记录 - 采样率

时间:2014-01-29 02:32:40

标签: android audiorecord sample-rate

我开发了一款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上进行了测试,采样率无效......

关于为什么的任何想法?

2 个答案:

答案 0 :(得分:1)

我是录音应用程序(Hi-Q MP3录音机)的开发者,我发现所有手机都支持44100 Hz,48000 Hz或两者兼而有之。

查看您的代码,您错过了48000.

答案 1 :(得分:1)

来自文档http://developer.android.com/reference/android/media/AudioRecord.html

  

采样率以赫兹表示。 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

祝你好运