журнал сбоев: InternalError в MediaPlayer.setSubtitleAnchor - PullRequest
0 голосов
/ 24 августа 2018

Видя, как часто появляется следующий журнал сбоев:

java.lang.InternalError: 
  at java.lang.Thread.nativeCreate (Native Method)
  at java.lang.Thread.start (Thread.java:733)
  at android.media.MediaPlayer.setSubtitleAnchor (MediaPlayer.java:3039)
  at android.media.MediaPlayer.scanInternalSubtitleTracks (MediaPlayer.java:3240)
  at android.media.MediaPlayer.prepare (MediaPlayer.java:1442)
  at android.media.MediaPlayer.create (MediaPlayer.java:1046)
  at android.media.MediaPlayer.create (MediaPlayer.java:1012)
  ...

Я звоню MediaPlayer.create с параметрами контекста / ресурса. Он отлично работает для меня и для 95% пользователей. Стоит отметить, что я получаю страшные

 E/MediaPlayer: Should have subtitle controller already set

сообщение журнала, которое является темой многих, многих вопросов StackOverflow. В настоящее время я игнорирую его, как большинство ответов говорят мне - но если scanInternalSubtitleTracks создает сбои InternalError, может, мне не следует?

1 Ответ

0 голосов
/ 28 августа 2018

в медиа-плеере Android после MEDIA_PREPARED, проигрыватель запускает поиск субтитров и любое исключение происходит во время поиска при отправке субтитров вместо сбоя.Вы должны игнорировать это, или вы можете использовать другого игрока, как ExoPlayer.

case MEDIA_PREPARED:
    try {
         scanInternalSubtitleTracks();
    } catch (RuntimeException e) {
      // send error message instead of crashing;
      // send error message instead of inlining a call to onError
      // to avoid code duplication.
      Message msg2 = obtainMessage(
                        MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, MEDIA_ERROR_UNSUPPORTED, null);
      sendMessage(msg2);
    }
    OnPreparedListener onPreparedListener = mOnPreparedListener;
    if (onPreparedListener != null)
         onPreparedListener.onPrepared(mMediaPlayer);
         return;

в Android версии 28 Android позволяет использовать .setOnSubtitleDataListener(), который может решить вашу проблему на Android 28

...