java - 检查Android设备支持的所有音频采样率

标签 java android audio

我想了解每个设备支持哪些采样率。我这样做了:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    frequencyslist = menu.addSubMenu("frecuencias de muestreo");
    int idx = 0;
    int[] list = { 8000, 11025, 16000, 22050, 44100, 96000, 1000000 };
    for (int i = 0; i < list.length; i++) {
        int bufferSize = AudioRecord.getMinBufferSize(list[i],
                AudioFormat.CHANNEL_CONFIGURATION_DEFAULT,
                AudioFormat.ENCODING_PCM_16BIT);
        if (bufferSize != -2) {

            frequencyslist.add(2, idx, Menu.NONE, String.valueOf(list[i]));
            idx++;
        }

    }

    return true;
}

但是我尝试的所有费率都出现在菜单中,而不仅仅是支持的费率。

最佳答案

正如克里斯在评论中所说,您应该检查任何错误条件,而不仅仅是-2The docs说它可以返回ERROR_BAD_VALUEERROR。如果它返回ERROR (-1),那么您仍在将该值添加到列表中。

至于为什么它会返回:

...or ERROR if the implementation was unable to query the hardware for its input properties...

您可能无法查询或者某些原因。也许它被另一个操作阻止,也许你没有权限等等。我不确定你是否需要 android.permission.RECORD_AUDIO 来简单地查询它,但请检查你的文件中是否有它明显。

旁注:CHANNEL_CONFIGURATION_DEFAULT 很久以前就已被弃用。您应该使用CHANNEL_IN_DEFAULT

关于java - 检查Android设备支持的所有音频采样率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499563/

相关文章:

java - 如何在 OSGi 框架停止之前销毁所有 OSGi 蓝图组件?

java - 使用 Java 将 ASN1 序列解码为 RSA 公钥

java - XML 编码 + 项目结构

java - Android 中的自定义 View 在每个设备上看起来都不同

android - 通过 Facebook、电子邮件和短信/彩信共享音频文件 (.mp3)

audio - 如何无损连接 ogg vorbis 文件?

java - Android:将 Person 与 NotificationCompat 结合使用

java - Android 如何每隔 x 小时或分钟执行一个方法

android - 将数组传递给新 Activity

java - 在程序中更改Java中程序的输出音频电平