我有一個我正在嘗試制作的錄音機來測試它,看看它是如何工作的。但是,當我運行它時,我得到了錯誤:E/MediaRecorder: start called in an invalid state: 4所以我做了一些 googlejitzu 并發現我的文件路徑是錯誤的。這是我的代碼:final MediaRecorder recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile("Test"); System.out.println("Hello"); try { recorder.prepare(); } catch (IOException e) { e.printStackTrace(); } recorder.start(); CountDownTimer countDownTimer = new CountDownTimer(30000, 1000) { @Override public void onTick(long l) { } @Override public void onFinish() { recorder.stop(); } }.start();所以我想我想知道如何在手機上創建一個文件路徑目錄來保存音頻。錯誤是: 11-11 01:49:48.275 23703-23703/com.example.arege.dayatalisten W/System.err: java.io.FileNotFoundException: Test: open failed: EROFS (Read-only file system)11-11 01:49:48.276 23703-23703/com.example.arege.dayatalisten W/System.err: at libcore.io.IoBridge.open(IoBridge.java:455) at java.io.RandomAccessFile.<init>(RandomAccessFile.java:247) at java.io.RandomAccessFile.<init>(RandomAccessFile.java:128) at android.media.MediaRecorder.prepare(MediaRecorder.java:834) at com.example.arege.dayatalisten.ListeningToTheWorld.onStartCommand(ListeningToTheWorld.java:47) at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3432) at android.app.ActivityThread.-wrap21(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1633) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6316)我有兩個必需的權限。
1 回答

阿波羅的戰車
TA貢獻1862條經驗 獲得超6個贊
您正在嘗試寫入您的應用程序無權訪問的內部存儲。它不是根設備。
您需要將文件寫入外部存儲。
使用:(getFilesDir() or getExternalFilesDir()在 Context 或 Activity 上)獲取目錄并將文件寫入該位置。
偽代碼:
File file = new File(context.getFilesDir(), "Test");
FileOutputStream outputStream = new FileOutputStream(file);
outputStream.write("contents".getBytes());
outputStream.close();
添加回答
舉報
0/150
提交
取消