在ExoPlayer中检测暂停/继续 [英] Detect pause/resume in ExoPlayer

查看:1080
本文介绍了在ExoPlayer中检测暂停/继续的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 github 中搜索了两个问题,但我找不到真正的答案.我想要检测ExoPlayer > 2.x中的pause / resume的示例. 有人可以给我一个例子吗?我检查了onPlayerStateChanged并没有解决问题.

I searched two days for this question in github but i can't find true answer . I want example for detecting pause / resume in ExoPlayer > 2.x . Any one can give me an example ? I checked onPlayerStateChanged and problem not solved .

onPlayerStateChanged   :   STATE_BUFFERING 
onPlayerStateChanged   :   STATE_READY 

我刚刚从onPlayerStateChanged那里得到了这个日志,而且并非一直如此!

I just got this log from onPlayerStateChanged and this is not called in all times !

推荐答案

您需要使用 ExoPlayer的播放状态与播放器是否暂停无关:

You need to check playWhenReady with a Player.EventListener. The Playback states of ExoPlayer are independent from the player being paused or not:

player.addListener(new Player.DefaultEventListener() {
  @Override
  public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
    if (playWhenReady && playbackState == Player.STATE_READY) {
      // media actually playing
    } else if (playWhenReady) {
      // might be idle (plays after prepare()), 
      // buffering (plays when data available) 
      // or ended (plays when seek away from end)
    } else {
      // player paused in any state
    }
  }
});

要播放/暂停ExoPlayer提供的播放器

To play/pause the player ExoPlayer provides

player.setPlayWhenReady(boolean)

ExoPlayer的播放状态与媒体文件的播放状态顺序(从不停止以进行重新缓冲)在四个状态中的每个状态中一次,并且不表示播放/暂停:

The sequence of playback states with ExoPlayer with a media file which never stalls to rebuffer is once in each of the four states and does not express play/paused:

Player.STATE_IDLE;
Player.STATE_BUFFERING;
Player.STATE_READY;
Player.STATE_ENDED;

玩家每次需要缓冲的时间都会过去:

Each time the player needs to buffer it goes:

Player.STATE_READY;
Player.STATE_BUFFERING;
Player.STATE_READY;

设置playWhenReady不会影响状态.

Setting playWhenReady does not affect the state.

您的媒体实际上在播放时

All together your media is actually playing when

playWhenReady && playbackState == Player.STATE_READY

准备就绪时播放. :)

It plays when ready. :)

这篇关于在ExoPlayer中检测暂停/继续的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆