通过采样率录制音频循环?

时间:2013-04-01 10:06:07

标签: android audio record rate

我正在尝试阅读和理解Android中的音频。在我的搜索中,我来了this article。在这里,他编写了一个以wav格式录制音频的代码。但有一点我不完全理解,这是他code的第一个循环:

public class ExtAudioRecorder 
{
    private final static int[] sampleRates = {44100, 22050, 11025, 8000};

    public static ExtAudioRecorder getInstanse(Boolean recordingCompressed)
    {
        ExtAudioRecorder result = null;

        if(recordingCompressed)
        {
            result = new ExtAudioRecorder(  false, 
                                            AudioSource.MIC, 
                                            sampleRates[3], 
                                            AudioFormat.CHANNEL_CONFIGURATION_MONO,
                                            AudioFormat.ENCODING_PCM_16BIT);
        }
        else
        {
            int i=0;
            do
            {
                result = new ExtAudioRecorder(  true, 
                                                AudioSource.MIC, 
                                                sampleRates[i], 
                                                AudioFormat.CHANNEL_CONFIGURATION_MONO,
                                                AudioFormat.ENCODING_PCM_16BIT);

            } while((++i<sampleRates.length) & !(result.getState() == ExtAudioRecorder.State.INITIALIZING));
        }
        return result;

他给出了关于它的基本信息,但我没有完全理解。这与不同类型的Android设备的性能有什么关系吗?无论如何,希望有人可以为我照亮这个:)

1 个答案:

答案 0 :(得分:2)

他正试图以{44100,22050,11025,8000}的不同采样率初始化录音机。

根据底层硬件的不同,设备可能不支持所有采样率。

虽然文档说:

“44100Hz是目前保证在所有设备上工作的唯一速率,但其他速率(如22050,16000和11025)可能适用于某些设备。”

我认为作者已编写代码以确保如果采样率初始化失败,则尝试以其他采样率初始化,除非初始化成功,这是由他正在进行的检查给出的循环条件。