アンドロイドエミュレーター(アンドロイド4.1)で音声を録音しようとしています。
しかし、ボタンを押して録音を開始すると、すぐに関数から戻り、「録音済み」というメッセージをログに記録する次の行が実行されます。
次に、停止ボタンを押すと、Logcatメッセージに、メディアレコーダーが未処理のイベントで消えたことが表示されます。
もう一度ボタンを押して録音を開始すると、FATAL SIGNAL 11というエラーメッセージが表示されます。また、SDカードにアクセスして、ファイルが作成されているかどうかを確認する方法がわかりません。
以下は、チュートリアルで使用したlogCatコードです。
}
public void start() throws IOException {
String state = android.os.Environment.getExternalStorageState();
if(!state.equals(android.os.Environment.MEDIA_MOUNTED)) {
throw new IOException("SD Card is not mounted. It is " + state + ".");
}
// make sure the directory we plan to store the recording in exists
File directory = new File(path).getParentFile();
if (!directory.exists() && !directory.mkdirs()) {
throw new IOException("Path to file could not be created.");
}
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(path);
try{
recorder.prepare();
}
catch(IOException e){
Log.e("Recorder","Recording failed");
}
recorder.start();
}
/**
* Stops a recording that has been previously started.
*/
public void stop() throws IOException {
recorder.stop();
recorder.release();
}
logCatは次のとおりです。
08-08 16:09:39.713:D / gralloc_goldfish(743):GPUエミュレーションのないエミュレーターが検出されました。
08-08 16:09:42.674:D / Recorder(743):録音済み
08-08 16:09:48.764:W / MediaRecorder(743):mediarecorderが未処理のイベントで消えました
08-08 16:13:01.613:A / libc(743):0x00000010(code = 1)での致命的なシグナル11(SIGSEGV)、スレッド743(xample.recorder)