РЕДАКТИРОВАТЬ---
Пожалуйста, обратитесь к методу Player.isPlaying()
, который предоставляет это как API.
Вместо того, чтобы проверять эти свойства по отдельности, можно вызвать Player.isPlaying.
https://exoplayer.dev/listening-to-player-events.html#playback-state-changes
--- РЕДАКТИРОВАТЬ КОНЕЦ
Вам нужно проверить playWhenReady
с помощью Player.EventListener. Состояния воспроизведения ExoPlayer не зависит от того, поставлен проигрыватель на паузу или нет:
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 предоставляет
player.setPlayWhenReady(boolean)
Последовательность состояний воспроизведения с ExoPlayer с медиафайлом, который никогда не останавливается для повторной буферизации, находится один раз в каждом из четырех состояний и не выражает воспроизведение/паузу:
Player.STATE_IDLE;
Player.STATE_BUFFERING;
Player.STATE_READY;
Player.STATE_ENDED;
Каждый раз, когда игроку нужно выполнить буферизацию, происходит:
Player.STATE_READY;
Player.STATE_BUFFERING;
Player.STATE_READY;
Установка playWhenReady не влияет на состояние.
Все вместе ваши медиа на самом деле воспроизводятся, когда
playWhenReady && playbackState == Player.STATE_READY
Он играет, когда готов. :)
person
marcbaechinger
schedule
02.01.2018