android - Android 5.1 中的语音通话录音

标签 android mediarecorder android-5.1.1-lollipop internal-storage call-recording

我有一个应用程序可以记录传入和传出的语音调用,它在 marshmallow 或更高版本的设备上运行良好。但是当我尝试在 android 5.1.1 上运行它时,它给我错误,应用程序停止响应。

 The error shown in logcat is-ava.lang.RuntimeException: Unable to start service com.android.hitech.calls.Unused.MyRecordingService@2cb0b090 with Intent { cmp=com.android.hitech.calls/.Unused.MyRecordingService (has extras) }: java.lang.IllegalStateException
                                                    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2925)
                                                    at android.app.ActivityThread.access$2100(ActivityThread.java:151)
                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1408)
                                                    at android.os.Handler.dispatchMessage(Handler.java:102)
                                                    at android.os.Looper.loop(Looper.java:135)
                                                    at android.app.ActivityThread.main(ActivityThread.java:5268)
                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                    at java.lang.reflect.Method.invoke(Method.java:372)
                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)
                                                 Caused by: java.lang.IllegalStateException
                                                    at android.media.MediaRecorder.start(Native Method)
                                                    at com.android.hitech.calls.Unused.MyRecordingService.onStartCommand(MyRecordingservice.java:88)
                                                    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2908)

我用于录制语音通话的代码是-

   recorder = new MediaRecorder();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        System.out.println("Present in MIC");
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    } else {
        recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALLS);

   }
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    recorder.setAudioEncodingBitRate(16);
    recorder.setAudioSamplingRate(44100);
    recorder.setOnErrorListener(this);
    recorder.setOnInfoListener(this);
    try {
        recorder.prepare();
        recorder.start();
    } catch (IOException e) {
        e.printStackTrace();
    }

编辑 - 我按照下面的答案中的建议做了,但我的错误仍然存​​在。通过稍微调整代码,调用状态现在只被调用一次,但应用程序仍然崩溃,甚至异常是相同的。

最佳答案

Because in android 5.1 android system triggers CALL_STATE twice every time...!! i.e. once your NEW_OUTGOING_CALL is started or if any incoming call STATE_RINGING , STATE_ONHOOK and STATE_IDLE gets triggered twice..!! You have to manage it via code.


您可以在此处找到 5.1 以上问题的引用... This is causing error

关于android - Android 5.1 中的语音通话录音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50405602/

相关文章:

java - 使用 eventBus 从特定 Activity 中清除堆栈 Activity

javascript - 使用MediaRecorder的HTML录制 Canvas ,并在其中包含视频

java - MediaRecorder 切断文件结尾

安卓 Lollipop TextView : different vertical alignment of digits and letters

android - boolean android.net.NetworkInfo.isConnectedOrConnecting() 在 Android 5.1.1 中不起作用

javascript - 如何在 Appgyver Steroids 应用程序中通过 Google 文档在 Android webview 中查看 PDF?

android - 如何让我的 SharedPreferences 对象在应用程序关闭后保存数据?

java - Android 通知监听器服务自行启动

java - MediaRecorder 在 android 上开始视频捕捉的问题

android - Lollipop 中的 SwitchPreference 回调行为更改