如何确定Android设备的音频功能?

7

我正在尝试使用Android的音频录制和播放功能。是否有一种方法可以枚举设备上可用的音频参数?

目前,当我传递硬件(或模拟器)不喜欢的参数组合时,我只会收到错误提示。因此,我必须“猜测”:

int bufferSize; 
int sampleRate;

// does the audio hardware do 44 kHz? 
sampleRate = 44100;
bufferSize = AudioRecord.getMinBufferSize(sampleRate, 
    AudioFormat.CHANNEL_CONFIGURATION_MONO,
    AudioFormat.ENCODING_PCM_16BIT);

if (bufferSize != AudioTrack.ERROR_BAD_VALUE) {
    // Nope, how about 22 kHz? 
    sampleRate = 22050;
}

bufferSize = AudioRecord.getMinBufferSize(sampleRate, 
    AudioFormat.CHANNEL_CONFIGURATION_MONO,
    AudioFormat.ENCODING_PCM_16BIT);

if (bufferSize != AudioTrack.ERROR_BAD_VALUE) { 
    ...

肯定有更好的方法!


这张图表显示,唯一支持的音频输入采样率是8 kHz?这是正确的吗?

1个回答

5

嗨,马克 - 是的,我看到了那个,它是谜题的一部分,但我希望有更全面的东西(并包括输入设置)。 - Seth
糟糕。似乎目前唯一可行的方法是循环遍历可能的参数。请参阅http://bit.ly/c3BieY,了解另一位开发人员在此方面的工作。我同意这不是非常优化的,希望能有一个getCapabilities()函数。 - Marc Bernstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接