DemoPlayerをベースにExoplayerを使用しています。 restart/replayビデオを最初からユーザーアクションで開始したいafter that ExoPlayer.STATE_ENDEDがディスパッチされます。
後でseekTo(0)
とmPlayer.setPlayWhenReady(true);
を使おうとしましたが、まったく何もしませんでした。
ライブラリをExoPlayerに更新しましたr1.4.2
そしてそれは仕事をします...
mPlayer.seekTo(0);
mPlayer.setPlayWhenReady(true); // replay from start
//再起動後にビデオを一時停止します
mPlayer.seekTo(0);
mPlayer.setPlayWhenReady(false);
LoopingMediaSourceを使用して、ビデオをシームレスにループさせることができます。次の例では、オーディオ/ビデオを無期限にループします。 LoopingMediaSourceを作成するときに、有限のループカウントを指定することもできます。
MediaSource source = new ExtractorMediaSource(audioUri, ...);
// Loops the audio indefinitely.
LoopingMediaSource loopingSource = new LoopingMediaSource(source);
またはリスナーを追加します
playerExo.addListener(new ExoPlayer.Listener() {
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
switch(playbackState) {
case ExoPlayer.STATE_BUFFERING:
break;
case ExoPlayer.STATE_ENDED:
playerExo.seekTo(0);
break;
case ExoPlayer.STATE_IDLE:
break;
case ExoPlayer.STATE_PREPARING:
break;
case ExoPlayer.STATE_READY:
break;
default:
break;
}
}
@Override
public void onPlayWhenReadyCommitted() {
}
@Override
public void onPlayerError(ExoPlaybackException error) {
}
});
playerExo.seekTo(0);
playerExo.setPlayWhenReady(true);//replay from start
/* If you want to Pause audio/video and restart
mPlayer.seekTo(0);
mPlayer.setPlayWhenReady(false);*/
Exoplayerの最新リリースをチェックして最新のものにすることができます。
このコードは私のために働きます
@OnClick(R.id.image_button_play)
public void play(){
Log.d(TAG, "play: clicked");
//If video has finished then set Exoplayer to 0
if (simpleExoPlayer.getPlaybackState() == Player.STATE_ENDED){
simpleExoPlayer.seekTo(0);
}
simpleExoPlayer.setPlayWhenReady(true);
playButton.setVisibility(View.INVISIBLE);
}