播放完成后,利用LibVLC MediaPlayer.Event.EndReached重置MediaPlayer

时间:2019-01-09 23:23:38

标签: android libvlc

我正在编写包含 LibVLC MediaPlayer 实现的Android应用活动。 MediaPlayer在大多数情况下都可以正常工作,但是根据视频结论,MediaPlayer将变得无响应。 从我的研究看来,这可能是因为媒体在MediaPlayer.Event.EndReached开火(vajehu)后变得不安。

我一直在注意MediaPlayer.getPlaybackState(),并且可以看到回放结束时MediaPlayer对象正处于“ Ended” 状态。 / p>

我可以继续释放我的MediaPlayer并在MediaPlayer.Event.EndReached被解雇时重新创建它,但是不确定这是否是一个好的做法。我希望MediaPlayer返回视频的开头,并等待用户输入以再次开始播放。

(如果相关,我正在使用MrMaffen's vlc-android-sdk)。

1 个答案:

答案 0 :(得分:0)

此后,我为此找到了一个整洁(更重要的是 高效!)解决方案;

MediaPlayer.Event.EndReached上触发我:

  • 调用MediaPlayer.setMedia(media)重新加载Media对象
  • 重置一些与我的MediaPlayer相关的UI元素
  • 最后,我将MediaPlayer的位置设置为MediaMediaPlayer.setTime(0)对象的开头

附带说明:由于LibVLC的MediaPlayer.setTime(Long position)方法只有在MediaPlayer.isPlaying()才有效,所以我需要编写一个小的包装方法来异步:

  • MediaPlayer.play()并等待MediaPlayer.isPlaying()
  • 然后MediaPlayer.setTime(0)
  • 最后MediaPlayer.pause()

比我期望的要简单得多的解决方案,尽管我希望这对从事相同类型项目工作的人有所帮助。