私はAndroid開発に不慣れで、次の質問/問題があります。
MediaRecorderクラスをいじって、マイクからの音声だけを録音しています。私は公式サイトに示されている手順に従っています:http://developer.android.com/reference/android/media/MediaRecorder.html
したがって、記録を開始するためにMediaRecorderオブジェクトを初期化して構成するメソッドがあります。ここにコードがあります:
//initializes audio recorder
MediaRecorder mrecorder = new MediaRecorder();
//configure the input sources
mrecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//set the output format
mrecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
//set the audio encoding
mrecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
//specify the output file
mrecorder.setOutputFile("/sdcard/test.3gp");
//prepare for recording
try {
mrecorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
Log.d("Syso". e.toString());
} catch (IOException e) {
e.printStackTrace();
Log.d("Syso". e.toString());
}
logcatのおかげで、シミュレーターでこのコードを実行すると、メソッドprepare()が呼び出されたときに例外が発生することがわかります。
java.io.FileNotFoundException: /sdcard/test.3gp (Permission denied)
そして、なぜこれが起こっているのか私にはわかりません。例外のメッセージのため、xmlに次の行を追加することにより、マニフェストでストレージにアクセスするためのアクセス許可を付与しました。
<uses-permission android:name="android.permission.STORAGE" />
しかし、これは何も修正せず、私はいつも同じ例外を受け取ります。SDカードはエミュレーターに従ってマウントされているので、私にはわかりません。