私は、非圧縮(wav形式)のオーディオを記録するアプリを作っています。私は実際にオーディオを録音するのにthis classを使用しています。現在のところ、私のアプリケーションは正常に記録されます(私はファイルを再生することができます)が、録画を停止するためにボタンをクリックすると、ログ出力や生命の兆候なしで10秒間アプリがハングします。最後に、それは丸くなり、ログにエラーのロードをダンプし、UIなどを更新します。私はAsyncTasksを使ってこのようなことを避けますが、動作しません。私のコードは次のとおりです:Androidアプリがハングアップする、強制終了/待機ダイアログが表示されるまで
//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では、私はいつも私に困ってしまったような出力を得ています。この出力は、ボタンをクリックして正しいstop()メソッド呼び出しのログ出力の後に発生します。
この出力は、RehearsalAudioRecorderクラスをログに記録しています。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を交換しました、私はレコードをクリックすると、アプリが完全にログがメインスレッドで起こっている何もない示しという事実にもかかわらず、ハングアップします。まだ完全に困った。
RehearsalAudioRecorderオブジェクトに問題がある可能性があります。コードを表示できますか? –
質問のリンクをクリックしてください! – fredley