Аудиоплеер не воспроизводится, когда я возвращаюсь к своему приложению после телефонного звонка

У меня есть приложение для обмена сообщениями, в котором, когда я нахожусь во время звонка и поступает обычный телефонный звонок, и я отказываюсь, мой исходящий аудиопоток для моего приложения работает, а входящий звук - нет. У меня есть audioplayer.startplayer, определенный в новом потоке, чтобы избежать сбоев из-за незаконных исключений, но я подозреваю, что это создает эту проблему. Вот мой код для этого:

  final Caller otherCaller = Mylib.getInstance().getUIState().getOtherCaller();

   if (otherCaller != null) {
                    if (otherCaller.getParticipant().videoPlayer != null) {
                        otherCaller.getParticipant().videoPlayer.startPlayer();
                    }
                    if (otherCaller.getParticipant().audioPlayer != null) {
                        if (state == Thread.State.NEW) {
                            otherCaller.getParticipant().audioPlayer.startPlayer();
                        }
                    }
                }

Не уверен, что это правильный путь, но если я не использую строку " "state == Thread.State.NEW) " происходит сбой за исключением:

  FATAL EXCEPTION: main
                                                                             Process: com.myapp.debug, PID: 3713
                                                                             java.lang.IllegalThreadStateException
                                                                                 at java.lang.Thread.start(Thread.java:722)
                                                                                 at com.lib.media.audio.AudioPlayer.startPlayer(AudioPlayer.java:89)
                                                                                 at com.myapp.call.ui.MycallActivity.onHandleNormalIncomingCall(MycallActivity.java:1398)
                                                                                 at com.myapp.call.ui.MycallActivity.access$100(MycallActivity.java:82)
                                                                                 at com.myapp.call.ui.MycallActivity$3.onCallStateChanged(MycallActivity.java:181)
                                                                                 at android.telephony.PhoneStateListener$1.handleMessage(PhoneStateListener.java:325)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                 at android.os.Looper.loop(Looper.java:154)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:6776)

1 ответ

Решение

Я думаю, что вы, вероятно, запускаете один и тот же поток дважды. Вам нужно запустить текущий поток, а не запускать его снова. Также, если ваш случай - аудио случай, попробуйте использовать паузу и возобновление вместо запуска и остановки. Можете сделать трюк, попробуйте и дайте мне знать, как это работает