如何在Media3 ExoPlayer中播放后移除MediaItem
单个MediaItem播放完成的回调实现及移除操作
如果使用ExoPlayer(Android平台主流媒体播放库),可以通过添加Player.Listener监听单个媒体项的播放完成事件,具体步骤如下:
- 给播放器实例注册监听,重写
onMediaItemCompleted方法,该方法会在每一个MediaItem正常播放完成时触发,区别于整个播放队列结束才触发的onPlaybackCompleted - 在回调内判断完成原因是否为正常播放结束,随后获取当前完成的MediaItem索引,从播放队列中移除该项
代码示例(Kotlin):
player.addListener(object : Player.Listener { override fun onMediaItemCompleted(mediaItem: MediaItem, reason: Int) { // 仅处理正常播放结束的情况,排除暂停、跳转等触发的完成事件 if (reason == Player.MEDIA_ITEM_COMPLETION_REASON_END_OF_MEDIA) { val completedItemIndex = player.currentMediaItemIndex // 从播放队列移除已完成的MediaItem player.removeMediaItem(completedItemIndex) } } })
如果使用其他媒体播放框架,核心思路一致:找到框架提供的单个媒体播放完成回调接口,在回调内执行移除当前媒体项的逻辑即可。
内容的提问来源于stack exchange,提问作者Tus Die
相关产品推荐
相关产品推荐

