diff --git a/app/src/leanback/java/com/fongmi/android/tv/service/DLNARendererService.java b/app/src/leanback/java/com/fongmi/android/tv/service/DLNARendererService.java index 8d116e91d..93b167d4d 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/service/DLNARendererService.java +++ b/app/src/leanback/java/com/fongmi/android/tv/service/DLNARendererService.java @@ -144,7 +144,7 @@ public class DLNARendererService extends AndroidUpnpServiceImpl implements Servi private void cleanupPlaybackRefs() { App.removeCallbacks(positionUpdater); if (currentListenerPlayer != null) { - currentListenerPlayer.removeListener(playerListener); + currentListenerPlayer.removeListener(listener); currentListenerPlayer = null; } if (playbackService != null) { @@ -195,7 +195,7 @@ public class DLNARendererService extends AndroidUpnpServiceImpl implements Servi player = playbackService.player(); avTransportImpl.setPlayerManager(player); currentListenerPlayer = player.getPlayer(); - currentListenerPlayer.addListener(playerListener); + currentListenerPlayer.addListener(listener); App.post(positionUpdater, 1000); } @@ -228,7 +228,7 @@ public class DLNARendererService extends AndroidUpnpServiceImpl implements Servi } }; - private final Player.Listener playerListener = new Player.Listener() { + private final Player.Listener listener = new Player.Listener() { @Override public void onPlaybackStateChanged(int playbackState) { notifyState(); @@ -243,9 +243,9 @@ public class DLNARendererService extends AndroidUpnpServiceImpl implements Servi private final PlaybackService.PlayerCallback playerCallback = new PlaybackService.PlayerCallback() { @Override public void onPlayerRebuild(Player newPlayer) { - if (currentListenerPlayer != null) currentListenerPlayer.removeListener(playerListener); + if (currentListenerPlayer != null) currentListenerPlayer.removeListener(listener); currentListenerPlayer = newPlayer; - newPlayer.addListener(playerListener); + newPlayer.addListener(listener); } }; diff --git a/app/src/main/java/com/fongmi/android/tv/player/PlayerManager.java b/app/src/main/java/com/fongmi/android/tv/player/PlayerManager.java index e2fd67195..34564025b 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/PlayerManager.java +++ b/app/src/main/java/com/fongmi/android/tv/player/PlayerManager.java @@ -41,8 +41,6 @@ import master.flame.danmaku.ui.widget.DanmakuView; public class PlayerManager implements ParseCallback { - public static final String TAG = PlayerManager.class.getSimpleName(); - private final Runnable runnable; private final Callback callback; private PlayerEngine engine; diff --git a/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java b/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java index 987ac6671..db399c516 100644 --- a/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java +++ b/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java @@ -80,6 +80,7 @@ public class PlaybackService extends MediaLibraryService implements MediaLibrary running = true; player = new PlayerManager(this); exoPlayer = player.getPlayer(); + exoPlayer.addListener(listener); session = new MediaLibrarySession.Builder(this, wrap(exoPlayer), this).build(); session.setSessionActivity(buildDefaultIntent()); EventBus.getDefault().register(this); @@ -420,11 +421,20 @@ public class PlaybackService extends MediaLibraryService implements MediaLibrary @Override public void onPlayerRebuild(Player newPlayer) { + exoPlayer.removeListener(listener); exoPlayer = newPlayer; + exoPlayer.addListener(listener); if (session != null) session.setPlayer(wrap(newPlayer)); playerCallbacks.forEach(callback -> callback.onPlayerRebuild(newPlayer)); } + private final Player.Listener listener = new Player.Listener() { + @Override + public void onPlaybackStateChanged(int state) { + if (state == Player.STATE_ENDED && !(hasNavigationCallback() && isNavigationOwner())) navigateItem(1); + } + }; + @NonNull @Override public ListenableFuture> onGetLibraryRoot(@NonNull MediaLibrarySession session, @NonNull MediaSession.ControllerInfo browser, @Nullable MediaLibraryService.LibraryParams params) {