在Media3中从MediaBrowser听ExoPlayer onPlayWhenReadyChanged的原因

问题描述 投票:0回答:0

我想使用ExoPlayer.setPauseAtEndOfMediaItems,并在自动停止时收听事件。 该文件说:

设置是否在每个媒体项目结束时暂停播放。 这意味着播放器将在当前时间轴中的每个窗口结束时暂停。当发生这种情况时,将通过调用 onPlayWhenReadyChanged 通知听众,原因是 PLAY_WHEN_READY_CHANGE_REASON_END_OF_MEDIA_ITEM。

所以我写了一个使用 MediaLibraryService 的服务,它创建了 ExoPlayer 并设置了监听

onPlayWhenReadyChanged
.

class MyExampleService : MediaLibraryService() {

    private val playerListener = object : Player.Listener {
        override fun onPlayWhenReadyChanged(playWhenReady: Boolean, reason: Int) {
            println("event in MyExampleService: reason=$reason")
            super.onPlayWhenReadyChanged(playWhenReady, reason)
        }
    }

    @androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class)
    override fun onCreate() {
        super.onCreate()
        val player = ExoPlayer.Builder(this)
            .setPauseAtEndOfMediaItems(true)
            .build()
        player.addListener(playerListener)
        ... and create media session ...
    }

从主要活动中,我创建了一个 MediaBrowser 通过媒体会话连接到此服务。我还设置了监听

onPlayWhenReadyChanged
.

的监听器
val playerListener = object : Player.Listener {
    override fun onPlayWhenReadyChanged(playWhenReady: Boolean, reason: Int) {
        println("event in MediaBrowser: reason=$reason")
        super.onPlayWhenReadyChanged(playWhenReady, reason)     
    }
}
val newBrowser = MediaBrowser.Builder(
    applicationContext,
    SessionToken(
        applicationContext,
        ComponentName(applicationContext, MyExampleService::class.java)
    )
).buildAsync().await()
newBrowser.addListener(playerListener)

使用

newBrowser.play()
播放音频有效,当自动停止时,两个听众都收到事件,如下所示:

I/System.out: event in MyExampleService: reason=5
I/System.out: event in MediaBrowser: reason=1

我希望

reason
都是
5
,这是 PLAY_WHEN_READY_CHANGE_REASON_END_OF_MEDIA_ITEM 的值,但我从设置为 MediaBrowser 的侦听器中得到了
1
。自动停止时如何获得
5
作为
reason

我正在使用以下 media3 包。

androidx.media3:media3-session:1.0.0-rc02
androidx.media3:media3-exoplayer:1.0.0-rc02
android exoplayer
© www.soinside.com 2019 - 2024. All rights reserved.