You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:04:59