检查android设备支持的所有音频采样率

时间:2013-12-10 16:16:27

标签: 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;
}

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

1 个答案:

答案 0 :(得分:0)

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

至于为什么它会返回:

  

...或ERROR如果实现无法查询硬件的输入属性...

您可能无法查询或出于某种原因。也许它被另一个操作阻止,也许你没有权限等等。我不确定你是否需要android.permission.RECORD_AUDIO来查询它,但检查你是否在清单中有它。

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