检查设备支持的PCM采样率
问题描述:
我想检查设备是否支持特定的采样率。检查设备支持的PCM采样率
我试过以下(根据这应该工作http://developer.android.com/reference/android/media/AudioRecord.html#getMinBufferSize(int,INT,INT)),但不(它从来没有得到AudioRecord.ERROR_BAD_VALUE):
int bufferSize8000 = AudioRecord.getMinBufferSize(90000000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
if(bufferSize8000 != (AudioRecord.ERROR_BAD_VALUE | AudioRecord.ERROR)) {
Log.v("samplerate", String.valueOf(bufferSize8000));
} else {
Log.v("samplerate", "NOTsupported");
}
答
(AudioRecord.ERROR_BAD_VALUE | AudioRecord.ERROR)
手段-2 | -1,等于-1,这等于AudioRecord.ERROR
,这就是为什么你永远不会得到你期望的结果。
所以这
if(bufferSize8000 != (AudioRecord.ERROR_BAD_VALUE | AudioRecord.ERROR)) {
应该
if (bufferSize8000 != Audiorecord.ERROR_BAD_VALUE && bufferSize8000 != AudioRecord.ERROR) {
还是一样。对于抽样率0Hz,返回缓冲区大小为4096. – Kristopher 2013-03-26 15:22:53
并非所有供应商在计算最小缓冲区大小时都会关心采样率。有些具有默认缓冲区大小,它们可能会乘以您指定的通道数。例如,请参阅[此实施](https://www.codeaurora.org/gitweb/quic/la/?p=platform/hardware/qcom/audio.git;a=blob;f=alsa_sound/AudioHardwareALSA.cpp; H = b68e25b6ed3f2b830393cb0e850397e44352e9e7; HB =参/头/ jb_rel_rb1.1#l1322) – Michael 2013-03-26 15:30:07