我正在尝试阅读和理解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设备的性能有什么关系吗?无论如何,希望有人可以为我照亮这个:)
答案 0 :(得分:2)
他正试图以{44100,22050,11025,8000}的不同采样率初始化录音机。
根据底层硬件的不同,设备可能不支持所有采样率。
虽然文档说:
“44100Hz是目前保证在所有设备上工作的唯一速率,但其他速率(如22050,16000和11025)可能适用于某些设备。”
我认为作者已编写代码以确保如果采样率初始化失败,则尝试以其他采样率初始化,除非初始化成功,这是由他正在进行的检查给出的循环条件。