设置播放器后,Android ExoPlayer控件不起作用

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

我有一个Android应用,该服务使用在服务中运行的ExoPlayer播放音频。在活动A中,您可以选择要播放的曲目。服务启动并开始播放音频。控件变为可见,一切看起来都很正常:

enter image description here

当我移至Activity-B时,由于是一项服务,因此音频会继续在后台播放。当我返回到Activity-A时,控件出现但未正确显示。音频仍然可以正常播放,但是进度条不正确,并且显示了播放和暂停按钮,而不仅仅是暂停:

enter image description here

我必须与控件进行交互,例如单击播放按钮,然后它们才能再次正常显示并正确显示进度条。

这是将播放器附加到控件的方法:

private void initializePlayer() {
    if (isBound && audioPlayerService != null) {
        player = audioPlayerService.getPlayerInstance();
        playerControlView.setPlayer(player);
    }
}

为什么控件不能立即起作用?

android service playback exoplayer
1个回答
0
投票

使用以下代码固定:

private void initializePlayer() {
    if (isBound && audioPlayerService != null) {
        player = audioPlayerService.getPlayerInstance();
        if (audioPlayerService.isPlaying()) {
            playerControlView.setVisibility(View.VISIBLE);
        }
        playerControlView.setPlayer(player);
    }

}

说明:

[经过研究后,我注意到在使用PlayerControlView.setPlayer()将播放器附加到视图之后,将调用PlayerControlView.updateAll()方法以使一切看起来正确。但是,需要检查控件是否可见,并且除非控件实际可见,否则更新不会完成(方法退出):

if (!isVisible() || !isAttachedToWindow) {
  return;
}

在我的代码中,我首先将播放器附加到控件上,然后将它们显示出来(这对我来说似乎很合逻辑),所以这就是问题所在。

© www.soinside.com 2019 - 2024. All rights reserved.