Мой код выглядит следующим образом:
private void startRecording() {
try {
mFileName = getActivity().getDir("testDir", MODE_PRIVATE).getAbsolutePath();
mFileName += "/audiorecordtest.3gp";
Log.i(LOG_TAG, mFileName);
//FileOutputStream fos = getActivity().getApplicationContext().openFileOutput(mFileName, Context.MODE_PRIVATE);
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
mRecorder.setAudioEncodingBitRate(16);
mRecorder.setAudioSamplingRate(44100);
mRecorder.prepare();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed" + e.getLocalizedMessage());
} catch(RuntimeException re){
Log.e(LOG_TAG, "runtime exception" + re.getLocalizedMessage());
}
mRecorder.start();
}
Когда я пытаюсь запустить приложение на эмуляторе (или на своем телефоне), приложение падает, и я получаю следующий журнал LogCat:
03-05 12:14:46.770: I/AudioRecordTest(5035): /data/data/com.example.test/app_testDir/audiorecordtest.3gp
03-05 12:14:46.890: E/MediaRecorder(5035): start failed: -2147483648
03-05 12:14:46.890: D/AndroidRuntime(5035): Shutting down VM
03-05 12:14:46.900: W/dalvikvm(5035): threadid=1: thread exiting with uncaught exception (group=0xb1a2aba8)
03-05 12:14:46.960: E/AndroidRuntime(5035): FATAL EXCEPTION: main
03-05 12:14:46.960: E/AndroidRuntime(5035): Process: com.example.test, PID: 5035
03-05 12:14:46.960: E/AndroidRuntime(5035): java.lang.RuntimeException: start failed.
03-05 12:14:46.960: E/AndroidRuntime(5035): at android.media.MediaRecorder.start(Native Method)
03-05 12:14:46.960: E/AndroidRuntime(5035): at com.example.test.MainActivity$RecordPlayFragment.startRecording(MainActivity.java:331)
03-05 12:14:46.960: E/AndroidRuntime(5035): at com.example.test.MainActivity$RecordPlayFragment.onRecord(MainActivity.java:277)
03-05 12:14:46.960: E/AndroidRuntime(5035): at com.example.test.MainActivity$RecordPlayFragment.access$0(MainActivity.java:275)
03-05 12:14:46.960: E/AndroidRuntime(5035): at com.example.test.MainActivity$RecordPlayFragment$RecordButton$1.onClick(MainActivity.java:345)
03-05 12:14:46.960: E/AndroidRuntime(5035): at android.view.View.performClick(View.java:4438)
03-05 12:14:46.960: E/AndroidRuntime(5035): at android.view.View$PerformClick.run(View.java:18422)
03-05 12:14:46.960: E/AndroidRuntime(5035): at android.os.Handler.handleCallback(Handler.java:733)
03-05 12:14:46.960: E/AndroidRuntime(5035): at android.os.Handler.dispatchMessage(Handler.java:95)
03-05 12:14:46.960: E/AndroidRuntime(5035): at android.os.Looper.loop(Looper.java:136)
03-05 12:14:46.960: E/AndroidRuntime(5035): at android.app.ActivityThread.main(ActivityThread.java:5017)
03-05 12:14:46.960: E/AndroidRuntime(5035): at java.lang.reflect.Method.invokeNative(Native Method)
03-05 12:14:46.960: E/AndroidRuntime(5035): at java.lang.reflect.Method.invoke(Method.java:515)
03-05 12:14:46.960: E/AndroidRuntime(5035): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-05 12:14:46.960: E/AndroidRuntime(5035): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-05 12:14:46.960: E/AndroidRuntime(5035): at dalvik.system.NativeStart.main(Native Method)
Мне просто интересно, знает ли кто-нибудь, что здесь происходит, так как после поиска в Google я не нашел ничего похожего на ту же ошибку.
File testFile = new File(getActivity().getDir("testDir", MODE_PRIVATE).getAbsolutePath()); Log.i("LOG_TAG", "testFile can write: " + testFile.canWrite()); Log.i("LOG_TAG", "testFile path: " + testFile.getAbsolutePath());
Также этот каталог должен быть просто каталогом данных приложения, поэтому я должен иметь доступ к нему и писать в него. - person user1799107   schedule 05.03.2014android.permission.RECORD_AUDIO
в манифест? - person Mario   schedule 05.03.2014mRecorder.start();
в блок try, чтобы посмотреть, поймает ли он что-нибудь там! К сожалению,java.lang.RuntimeException: start failed.
не очень помогает :/ - person Mario   schedule 05.03.2014