2

我为 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 上对其进行了测试,但采样率不起作用……

关于为什么的任何想法?

4

2 回答 2

1

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

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

于 2014-01-29T02:40:45.163 回答
1

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

以赫兹表示的采样率。44100Hz 是目前唯一保证适用于所有设备的速率,但其他速率(例如 22050、16000 和 11025)可能适用于某些设备。

还注意到您正在使用 AudioFormat.CHANNEL_CONFIGURATION_MONO 根据文档http://developer.android.com/reference/android/media/AudioFormat.html已弃用

此常量在 API 级别 5 中已弃用。请改用 CHANNEL_OUT_MONO 或 CHANNEL_IN_MONO

祝你好运

于 2015-05-21T10:19:58.627 回答