Запись голосовых вызовов в Android 5.1 - PullRequest
0 голосов
/ 18 мая 2018

У меня есть приложение, которое записывает входящие и исходящие голосовые вызовы, и оно отлично работает на устройствах с зефиром или более поздними версиями. Но когда я попытался запустить его на 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();
    }

Редактировать - я сделал, как предложено в ответе ниже, но я все еще здесь, ошибка. Состояние вызова вызывается толькооднажды, немного подправив код, но приложение по-прежнему падает, и даже исключение остается прежним.

1 Ответ

0 голосов
/ 18 мая 2018

Потому что в Android 5.1 система Android запускает CALL_STATE дважды каждый раз ... !!то есть, как только ваш NEW_OUTGOING_CALL запущен или если любой входящий вызов STATE_RINGING, STATE_ONHOOK и STATE_IDLE будет запущен дважды .. !!Вы должны управлять этим с помощью кода.


Вы можете найти ссылку, что проблема за 5.1 здесь ... Это вызывает ошибку

...