Android AudioRecord 支持的采样率

标签 android audio android-audiorecord

我试图弄清楚运行 Android 2.2 及更高版本的手机支持哪些采样率。我们希望以低于 44.1kHz 的速率进行采样,而不必重新采样。
我知道所有手机都支持 44100Hz,但想知道是否有一张表格可以显示特定手机的采样率有效。我看过 Android 的文档( http://developer.android.com/reference/android/media/AudioRecord.html ) 但它并没有多大帮助。
有人找到这些采样率的列表吗?

最佳答案

原来的发帖人可能早就搬走了,但我会发布这个以防其他人发现这个问题。

不幸的是,根据我的经验,每个设备都可以支持不同的采样率。了解设备支持的采样率的唯一可靠方法是通过检查 AudioRecord.getMinBufferSize() 的结果是否为非负数(这意味着存在错误)来单独测试它们,并返回有效的最小缓冲区大小。

public void getValidSampleRates() {
    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_DEFAULT, AudioFormat.ENCODING_PCM_16BIT);
        if (bufferSize > 0) {
            // buffer size is valid, Sample rate supported

        }
    }
}

关于Android AudioRecord 支持的采样率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8043387/

相关文章:

Android autoCompleteTextView 随屏幕尺寸变化?

audio - 通过从M4A文件转换,WAV文件变得太大

java - AudioInputStream.close() 未正确释放资源,有解决方法吗?

cordova - Cordova Media Capture-查找音频文件的持续时间

java - Android应用程序可实时录制声音并识别频率

android - VerifyError,还是在保持兼容性的情况下使用 overridePendingTransition?

android - 设置 imageAnalysis.setAnalyzer() 时编译错误

android - Android AudioRecord 的 AudioHardwareALSA 错误

使用 Android AudioRecord 时出现 java.lang.NullPointerException

android - 如何只加载一次Fragment并保存其状态?