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;
}

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

最佳答案

正如Chris在评论中所说,您应该检查是否有任何错误情况,而不仅仅是-2The docs表示它可以返回ERROR_BAD_VALUE ERROR。如果返回的是ERROR(-1),那么您仍在将该值添加到列表中。

至于为什么要返回:

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



您可能无法查询它或某些原因。也许它被其他操作阻止了,也许您没有权限等。我不确定您是否需要android.permission.RECORD_AUDIO来简单地查询它,但请检查 list 中是否包含它。

旁注:CHANNEL_CONFIGURATION_DEFAULT很久以前不推荐使用。您应该使用CHANNEL_IN_DEFAULT

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

相关文章:

java - 死锁和同步方法

JavaFX 异常关闭警报返回不正确的结果

java - JMockit 无法模拟来自 JRE 的具体集合

php - 将Android设备连接到Apache服务器

ios - 错误:无法在录制的音频文件上设置客户端格式(-66563)-EZRecorder/EZAudio

java - 在命令行界面写一个看似自指的 "-d . "有什么用

java - 谷歌地图AndroidRuntime FATAL EXCEPTION : main

android - 无法在任务 'jniFolders' 上设置只读属性 ':android:packageDebug' 的值

javascript - Ionic 2 范围 slider 导致 "Expression value changed after it was checked"错误

javascript - 在 Internet Explorer 中播放 HTML 音频?