猿问

录音机状态无效(文件路径错误?)

我有一个我正在尝试制作的录音机来测试它,看看它是如何工作的。但是,当我运行它时,我得到了错误:


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)

我有两个必需的权限。


慕妹3146593
浏览 292回答 1
1回答

阿波罗的战车

您正在尝试写入您的应用程序无权访问的内部存储。它不是根设备。您需要将文件写入外部存储。使用:(getFilesDir() or getExternalFilesDir()在 Context 或 Activity 上)获取目录并将文件写入该位置。伪代码:File file = new File(context.getFilesDir(), "Test");FileOutputStream outputStream = new FileOutputStream(file);outputStream.write("contents".getBytes());outputStream.close();
随时随地看视频慕课网APP

相关分类

Java
我要回答