Я делаю приложение, которое записывает несжатый звук (в формате WAV).Я использую этот класс для записи звука.В настоящее время мое приложение записывает нормально (я могу воспроизвести файл), однако, когда я нажимаю кнопку, чтобы остановить запись, приложение зависает на 10 секунд или около того, без вывода журнала или каких-либо признаков жизни.Наконец, он возвращается, выдает множество ошибок в журнал, обновляет пользовательский интерфейс и т. Д. Я использую AsyncTasks, чтобы попытаться избежать такого рода вещей, но это не работает.Вот мой код:
//Called on clicks of the record button. rar is the instance of RehearsalAudioRecorder
private OnClickListener RecordListener = new OnClickListener(){
@Override
public void onClick(View v) {
Log.d("Record","Click");
if (recording){
new stopRecordingTask().execute(rar,null,null);
startStop.setText("Record");
statusBar.setText("Recording Finished, ready to Encode");
}else{
recording = true;
new startRecordingTask().execute(rar,null,null);
startStop.setText("Stop");
statusBar.setText("Recording Started");
}
}
};
private class startRecordingTask extends AsyncTask<RehearsalAudioRecorder,Void,Void>{
@Override
protected Void doInBackground(RehearsalAudioRecorder... rs) {
RehearsalAudioRecorder r = rs[0];
r.setOutputFile("/sdcard/rarOut.wav");
r.prepare();
r.start();
return null;
}
}
private class stopRecordingTask extends AsyncTask<RehearsalAudioRecorder,Void,Void>{
@Override
protected Void doInBackground(RehearsalAudioRecorder... rs) {
RehearsalAudioRecorder r = rs[0];
r.stop();
r.reset();
return null;
}
}
В Logcat я всегда получаю вывод, подобный этому, что ставит меня в тупик.Я понятия не имею, что это вызывает (я регистрирую класс RehearsalAudioRecorder, и он запускается / останавливается правильно нажатием кнопки. Этот вывод происходит после вывода журнала для нажатия кнопки и правильного вызова метода stop ())
12-19 11:59:11.172: ERROR/AudioRecord-JNI(22662): Unable to retrieve AudioRecord object, can't record
12-19 11:59:11.172: ERROR/uk.ac.cam.tfmw2.steg.RehearsalAudioRecorder(22662): Error occured in updateListener, recording is aborted
12-19 11:59:11.172: ERROR/uk.ac.cam.tfmw2.steg.RehearsalAudioRecorder(22662): stop() called on illegal state: STOPPED
12-19 11:59:11.172: ERROR/AudioRecord-JNI(22662): Unable to retrieve AudioRecord object, can't record
12-19 11:59:11.172: ERROR/uk.ac.cam.tfmw2.steg.RehearsalAudioRecorder(22662): Error occured in updateListener, recording is aborted
12-19 11:59:11.172: ERROR/uk.ac.cam.tfmw2.steg.RehearsalAudioRecorder(22662): stop() called on illegal state: ERROR
12-19 11:59:11.172: ERROR/AudioRecord-JNI(22662): Unable to retrieve AudioRecord object, can't record
12-19 11:59:11.172: ERROR/uk.ac.cam.tfmw2.steg.RehearsalAudioRecorder(22662): Error occured in updateListener, recording is aborted
12-19 11:59:11.172: ERROR/uk.ac.cam.tfmw2.steg.RehearsalAudioRecorder(22662): stop() called on illegal state: ERROR
... 10 or more times
Я возился с этим весь день, и я никуда не денусь, любой вклад будет принят с благодарностью.
Обновление Я заменил AsyncTasksПотоки по-прежнему не работают, приложение полностью зависает, когда я нажимаю на запись, несмотря на то, что журнал указывает, что в основном потоке ничего не происходит.Все еще в полном замешательстве.