MediaRecorder启动失败

问题描述 投票:0回答:1

我正在尝试制作一个语音通话录音应用程序。但我面临一个问题。当我开始录制时,应用程序崩溃了。它显示 MediaRecorder 启动失败:-2147483648。我现在能做什么?

在这里我使用 MediaRecorder 类。

我已经尝试过这段代码。

public void startRecord(){
        String error = "";
        mediaRecorder = new MediaRecorder();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mediaRecorder.setAudioEncodingBitRate(16);
        mediaRecorder.setAudioSamplingRate(44100);

        // Set the output file path
        String outputFilePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/test.mp3" ;
        System.out.println(outputFilePath);
        mediaRecorder.setOutputFile(outputFilePath);


        try {

            mediaRecorder.prepare();
            mediaRecorder.start();
            mediaRecorder.setOnErrorListener(new MediaRecorder.OnErrorListener() {
                @Override
                public void onError(MediaRecorder mediaRecorder, int i, int i1) {
                    System.out.println(mediaRecorder);
                    System.out.println(i);
                    System.out.println(i1);
                }
            });
            error = "Start Record";

        } catch (IOException e) {
            e.printStackTrace();
            error = e.getMessage();
            System.out.println(e.getMessage());

        }

    }

但是我在我的 android studio 日志中收到了这个错误。是的,我在移动设备中运行它,而不是在模拟器中运行。

错误是,

start failed: -2147483648
2023-10-15 23:05:21.957  1750-1750  AndroidRuntime          com.team71.callrecording             D  Shutting down VM
2023-10-15 23:05:21.962  1750-1750  AndroidRuntime          com.team71.callrecording             E  FATAL EXCEPTION: main
                                                                                                    Process: com.team71.callrecording, PID: 1750
                                                                                                    java.lang.RuntimeException: start failed.
                                                                                                        at android.media.MediaRecorder.start(Native Method)
                                                                                                        at com.team71.callrecording.StartRecording.startRecord(StartRecording.java:34)
                                                                                                        at com.team71.callrecording.MainActivity$2.onClick(MainActivity.java:60)
                                                                                                        at android.view.View.performClick(View.java:7505)
                                                                                                        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1213)
                                                                                                        at android.view.View.performClickInternal(View.java:7477)
                                                                                                        at android.view.View.access$3600(View.java:824)
                                                                                                        at android.view.View$PerformClick.run(View.java:28652)
                                                                                                        at android.os.Handler.handleCallback(Handler.java:938)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                        at android.os.Looper.loop(Looper.java:257)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8218)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:626)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1016)
android mediarecorder
1个回答
0
投票

根据文档

从 VOICE_CALL 源捕获需要 Manifest.permission.CAPTURE_AUDIO_OUTPUT 权限。这个权限 保留供系统组件使用,不可用于 第三方应用程序。

换句话说,除非您是系统应用程序,否则您必须使用不同的源(例如VOICE_COMMUNICATION)。

© www.soinside.com 2019 - 2024. All rights reserved.