Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MediaRecorder启动失败错误_Java_Android_Android Mediarecorder_Android 8.0 Oreo_Call Recording - Fatal编程技术网

Java MediaRecorder启动失败错误

Java MediaRecorder启动失败错误,java,android,android-mediarecorder,android-8.0-oreo,call-recording,Java,Android,Android Mediarecorder,Android 8.0 Oreo,Call Recording,我想录制通话语音,但我收到MediaRecorder:启动失败:-2147483648 这是我的通话记录代码块 public void SesKayitBaslat(String number) { Toast.makeText(context, "ANSWERED", Toast.LENGTH_LONG).show(); String out = new SimpleDateFormat("dd-MM-yyyy hh-mm-ss").format(ne

我想录制通话语音,但我收到MediaRecorder:启动失败:-2147483648

这是我的通话记录代码块

   public void SesKayitBaslat(String number) {

        Toast.makeText(context, "ANSWERED", Toast.LENGTH_LONG).show();

        String out = new SimpleDateFormat("dd-MM-yyyy hh-mm-ss").format(new Date());
        File sampleDir = new File(Environment.getExternalStorageDirectory(), "/ASesKaydi");
        if (!sampleDir.exists()) {
            sampleDir.mkdirs();
        }
        String file_name = "Record";
        try {
            audiofile = File.createTempFile(file_name, ".amr", sampleDir);
        } catch (IOException e) {
            e.printStackTrace();
        }
        String path = Environment.getExternalStorageDirectory().getAbsolutePath();

        recorder  = new MediaRecorder();
                          //recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);

        recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        recorder.setOutputFile(audiofile.getAbsolutePath());
        try {
            recorder.prepare();
        } catch (IllegalStateException e) {
            Log.e("Eror","1");
            e.printStackTrace();
        } catch (IOException e) {
            Log.e("Eror","2");
            e.printStackTrace();
        }
        if(!recordstarted)
        {

            recorder.start();
            recordstarted = true;
        }
        Log.e("Kayit:", "Başladı");

    }
我的错误是什么?有人能帮我吗?我尝试了MediaRecorder.AudioSource.VOICE_呼叫和MediaRecorder.AudioSource.VOICE_通信
当我使用语音通信类型时,我没有得到呼叫者的语音。

代码
2147483648
指媒体错误系统(低级系统错误)

根据文件:

BroadcastReceiver对象仅在调用期间有效 接收(上下文、意图)。一旦你的代码从这里返回 功能,系统认为对象已完成,不再 活跃的

换句话说,您期望存在的MediaRecorder实例可能实际上已经不存在了,因为您所在的BroadcastReceiver实例与创建MediaRecorder的实例不同。在BroadcastReceiver中执行此任务不是一个好主意,因为它只执行10秒,之后系统可能会声明应用程序没有响应


一个解决方案是执行此代码到
服务

您是否在BroadcastReceiver中执行此代码?是的,先生@sagar。