Использование LibVLC MediaPlayer.Event.EndReached для сброса MediaPlayer после завершения воспроизведения - PullRequest
0 голосов
/ 10 января 2019

Я нахожусь в процессе написания приложения для Android, в котором реализована LibVLC MediaPlayer . MediaPlayer работает нормально по большей части, однако после вывода видео MediaPlayer перестает отвечать на запросы. По моим исследованиям, похоже, что это может быть связано с тем, что СМИ перестали работать при MediaPlayer.Event.EndReached стрельбе ( vajehu ).

Я следил за MediaPlayer.getPlaybackState() и вижу, что MediaPlayer объект находится в состоянии "Завершено" , когда воспроизведение завершается, как и ожидалось.

Я могу пойти дальше и выпустить мой MediaPlayer и воссоздать его при срабатывании MediaPlayer.Event.EndReached, но я не уверен, что это хороший курс действий. Я надеюсь, что MediaPlayer вернется к началу видео и дождусь ввода пользователя, чтобы снова начать воспроизведение.

(Если это уместно - я использую vlc-android-sdk MrMaffen ).

1 Ответ

0 голосов
/ 10 января 2019

С тех пор я обнаружил опрятное (и, что более важно, эффективное !) Решение для этого;

После MediaPlayer.Event.EndReached стрельбы I:

  • Вызовите MediaPlayer.setMedia(media), чтобы перезагрузить Media объект
  • Сброс нескольких элементов пользовательского интерфейса, относящихся к моему MediaPlayer
  • Наконец, я установил MediaPlayer позицию начала Media объекта с помощью MediaPlayer.setTime(0)

Примечание: , так как метод MediaPlayer.setTime(Long position) LibVLC не имеет эффекта, если только MediaPlayer.isPlaying(), мне нужно было написать небольшой метод-обертку для асинхронно:

  • MediaPlayer.play() и ждать MediaPlayer.isPlaying()
  • Тогда MediaPlayer.setTime(0)
  • Наконец MediaPlayer.pause()

намного более простое решение, чем я ожидал, хотя я надеюсь, что это поможет всем, кто может почесать голову, работая над проектом того же типа.

...