【发布时间】:2020-04-25 00:00:30
【问题描述】:
我用这个ExoPlayer demo 播放音频流。
我修改了用于播放带有通知的音频的代码。
为此,我将 Exoplayer 代码放在服务类中,但暂停方法不工作不知道会发生什么,但 setPlayWhenReady(false) 不在服务中工作。检查这个修改后的source code
【问题讨论】:
我用这个ExoPlayer demo 播放音频流。
我修改了用于播放带有通知的音频的代码。
为此,我将 Exoplayer 代码放在服务类中,但暂停方法不工作不知道会发生什么,但 setPlayWhenReady(false) 不在服务中工作。检查这个修改后的source code
【问题讨论】:
那是因为每次你 setPlayWhenReady(false) 时,ExoPlayer 监听器的onPlayerStateChanged 方法被调用并且你在监听器中设置setPlayWhenReady(true)。
所以这就是你需要做的:
1. 在你的服务中定义一个字段:
boolean isPreparing;
2。在初始化 ExoPlayer 之前设置 isPreparing = true :
isPreparing = true;
player.prepare(...);
3。在 ExoPlayer Listener 的onPlayerStateChanged 方法中:
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
if(isPreparing && playbackState == ExoPlayer.STATE_READY){
// do whatever you want
isPreparing = false;
}
}
就是这样。
【讨论】: