我正在创建一个应用程序来检测通过麦克风播放的声音频率。分析在 AsyncTask 中完成。当我尝试一个音符时它会起作用。
但是,当我尝试分析来自不同吉他弦的 6 个音符时,一个接一个(中间有大约一秒钟的延迟),它可能只捕捉到一个。
这是我得到的一些 LogCat 输出:
11-22 19:50:04.333: ERROR/AudioHardwareMSM72XX(1296): [doRouting]sndDevice=0,mCurSndDevice=-1
11-22 19:50:04.333: ERROR/AudioHardwareMSM72XX(1296): [SKW]do_route_audio_rpc(0, 1, 0)
11-22 19:50:04.333: ERROR/AudioHardwareMSM72XX(1296): msm72xx_enable_audpp: 0x0000
11-22 19:50:04.333: ERROR/AudioHardwareMSM72XX(1296): [doRouting]sndDevice=0,mCurSndDevice=0
11-22 19:50:30.523: ERROR/AudioHardwareMSM72XX(1296): Cannot open /dev/msm_pcm_in errno: 16
11-22 19:50:30.533: ERROR/AudioRecord(23241): Could not get audio input for record source 1
11-22 19:50:30.533: ERROR/AudioRecord-JNI(23241): Error creating AudioRecord instance: initialization check failed.
11-22 19:50:30.533: ERROR/AudioRecord-Java(23241): [ android.media.AudioRecord ] Error code -20 when initializing native AudioRecord object.
我删除了所有重复的内容。
这是我班的主要内容:
static AudioRecord recorder;
static short[] audioData;
static int bufferSize;
static int samplerate = 8000;
static boolean recorded = false;
@Override
protected Integer doInBackground(params) {
bufferSize= AudioRecord.getMinBufferSize(samplerate,AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT)*2;
recorder = new AudioRecord (AudioSource.MIC,samplerate,AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,bufferSize);
audioData = new short [bufferSize]; //short array that pcm data is put into.
int recordingLoops = 0;
while (recordingLoops < 4 || recorded) { //loop until recording is running
if (recorder.getState()==android.media.AudioRecord.STATE_INITIALIZED)
if(recorder.getRecordingState()==android.media.AudioRecord.RECORDSTATE_STOPPED)
recorder.startRecording();
else {
recorder.read(audioData,0,bufferSize);
getFrequencyFromAudiodata(audioData);
recorded = true;
}
recordingLoops++;
}
if (recorder.getState()==android.media.AudioRecord.RECORDSTATE_RECORDING)
{
killRecorder();
}
return 1;
}
你们知道发生了什么吗?我做了一些环顾四周,但我似乎只是遇到有人说 Android 是“充满错误”。
任何帮助将不胜感激。
谢谢,本