From 6667136bb0f54b15782fdd6849a8a7e631883d8a Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 18 Jan 2023 16:57:10 +0800 Subject: [PATCH] Fix bug --- .../tv/ui/activity/DetailActivity.java | 1 - .../android/tv/ui/activity/LiveActivity.java | 3 -- .../fongmi/android/tv/event/PlayerEvent.java | 6 ++++ .../com/fongmi/android/tv/player/Players.java | 30 +++++++++++++------ 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 6cf2b6f4e..ec18a8db0 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -654,7 +654,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } private void setR1Callback() { - App.removeCallbacks(mR1); App.post(mR1, Constant.INTERVAL_HIDE); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 34bc39bde..a8f89727c 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -384,12 +384,10 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick } private void setR1Callback() { - App.removeCallbacks(mR1); App.post(mR1, Constant.INTERVAL_HIDE); } private void setR2Callback() { - App.removeCallbacks(mR2); App.post(mR2, Constant.INTERVAL_HIDE); } @@ -527,7 +525,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void setUITimer() { - App.removeCallbacks(mR0); App.post(mR0, Constant.INTERVAL_HIDE); } diff --git a/app/src/main/java/com/fongmi/android/tv/event/PlayerEvent.java b/app/src/main/java/com/fongmi/android/tv/event/PlayerEvent.java index 075dfd632..d37310d0b 100644 --- a/app/src/main/java/com/fongmi/android/tv/event/PlayerEvent.java +++ b/app/src/main/java/com/fongmi/android/tv/event/PlayerEvent.java @@ -1,11 +1,17 @@ package com.fongmi.android.tv.event; +import com.google.android.exoplayer2.Player; + import org.greenrobot.eventbus.EventBus; public class PlayerEvent { private final int state; + public static void ready() { + EventBus.getDefault().post(new PlayerEvent(Player.STATE_READY)); + } + public static void state(int state) { EventBus.getDefault().post(new PlayerEvent(state)); } diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index 935047135..dff6883b1 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -341,9 +341,12 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM } private void setTimeoutCheck() { + App.post(timeout, Constant.TIMEOUT_PLAY); PlayerEvent.state(0); + } + + private void removeTimeoutCheck() { App.removeCallbacks(timeout); - App.post(timeout, Constant.TIMEOUT_PLAY); } private void setTrack(Track item) { @@ -381,14 +384,23 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM @Override public void onPlayerError(@NonNull PlaybackException error) { this.errorCode = error.errorCode; - App.removeCallbacks(timeout); + removeTimeoutCheck(); ErrorEvent.format(); } @Override public void onPlaybackStateChanged(int state) { - if (state == Player.STATE_READY) App.removeCallbacks(timeout); - PlayerEvent.state(state); + switch (state) { + case Player.STATE_READY: + removeTimeoutCheck(); + PlayerEvent.ready(); + break; + case Player.STATE_BUFFERING: + case Player.STATE_ENDED: + case Player.STATE_IDLE: + PlayerEvent.state(state); + break; + } } @Override @@ -400,8 +412,8 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM case IMediaPlayer.MEDIA_INFO_BUFFERING_END: case IMediaPlayer.MEDIA_INFO_VIDEO_SEEK_RENDERING_START: case IMediaPlayer.MEDIA_INFO_AUDIO_SEEK_RENDERING_START: - PlayerEvent.state(Player.STATE_READY); - App.removeCallbacks(timeout); + removeTimeoutCheck(); + PlayerEvent.ready(); return true; default: return true; @@ -410,15 +422,15 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM @Override public boolean onError(IMediaPlayer mp, int what, int extra) { - App.removeCallbacks(timeout); + removeTimeoutCheck(); ErrorEvent.format(); return true; } @Override public void onPrepared(IMediaPlayer mp) { - PlayerEvent.state(Player.STATE_READY); - App.removeCallbacks(timeout); + removeTimeoutCheck(); + PlayerEvent.ready(); } @Override