0

我正在尝试阅读和理解 Android 中的音频。在我的搜索中,我找到了这篇文章。在这里,他编写了一个以 wav 格式录制音频的代码。但是有一件事我并不完全理解,那就是他的代码的第一个循环:

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;

他提供了有关它的基本信息,但我并不完全了解。这和不同类型安卓设备的性能有关系吗?无论如何,希望有人可以为我照亮这个:)

4

1 回答 1

2

他正在尝试从这些 {44100, 22050, 11025, 8000} 中以不同的采样率初始化录音机。

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

虽然文档说:

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

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

于 2013-04-01T18:29:58.780 回答