From cd627ec732bf39ae8dec989022ebefa6b097881c Mon Sep 17 00:00:00 2001 From: okjack Date: Mon, 17 Jun 2024 19:24:42 +0800 Subject: [PATCH] Fix bug --- .../android/tv/ui/activity/CastActivity.java | 2 +- .../android/tv/ui/activity/LiveActivity.java | 11 +++++++---- .../android/tv/ui/activity/VideoActivity.java | 17 +++++++++++------ .../com/fongmi/android/tv/player/Players.java | 8 +++----- app/src/mobile/AndroidManifest.xml | 2 +- .../android/tv/ui/activity/LiveActivity.java | 4 ++++ .../android/tv/ui/activity/VideoActivity.java | 3 +++ 7 files changed, 30 insertions(+), 17 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java index 588491b2e..7ab463066 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java @@ -6,7 +6,6 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; -import android.support.v4.media.MediaMetadataCompat; import android.view.KeyEvent; import android.view.View; @@ -392,6 +391,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List private void onStopped() { setState(RenderState.STOPPED); + mPlayers.reset(); mPlayers.stop(); } 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 8fc610e15..0443b5e17 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 @@ -501,6 +501,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP private void hideControl() { mBinding.control.getRoot().setVisibility(View.GONE); + mBinding.widget.top.setVisibility(View.GONE); App.removeCallbacks(mR1); } @@ -621,6 +622,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP mViewModel.getUrl(mChannel, item); setActivated(item); mPlayers.clear(); + mPlayers.stop(); showProgress(); hideEpg(); } @@ -686,6 +688,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP LiveConfig.get().setKeep(mChannel); mViewModel.getUrl(mChannel); mPlayers.clear(); + mPlayers.stop(); showProgress(); } @@ -714,6 +717,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP @Override public void setLive(Live item) { LiveConfig.get().setHome(item); + mPlayers.reset(); mPlayers.stop(); resetAdapter(); hideControl(); @@ -819,6 +823,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP private void onError(ErrorEvent event) { showError(event.getMsg()); + mPlayers.reset(); mPlayers.stop(); startFlow(); } @@ -955,14 +960,12 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP @Override public void onKeyUp() { - if (!mPlayers.isVod()) prevChannel(); - else showControl(mBinding.control.player); + prevChannel(); } @Override public void onKeyDown() { - if (!mPlayers.isVod()) nextChannel(); - else showControl(mBinding.control.player); + nextChannel(); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 31e3fbd56..3913af42a 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -293,6 +293,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void setEpisodeSelectedPosition(int position) { getEpisodeView().setSelectedPosition(position); if (hasKeyEvent) return; + if (isFullscreen()) return; getEpisodeView().postDelayed(() -> { View selectedItem = getEpisodeView().getLayoutManager().findViewByPosition(position); View focusedView = getCurrentFocus(); @@ -533,6 +534,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List getIntent().putExtra("id", item.getVodId()); mBinding.scroll.scrollTo(0, 0); mClock.setCallback(null); + mPlayers.reset(); mPlayers.stop(); getDetail(); } @@ -549,6 +551,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mViewModel.playerContent(getKey(), flag.getFlag(), episode.getUrl()); updateHistory(episode, replay); mPlayers.clear(); + mPlayers.stop(); showProgress(); setMetadata(); hidePreview(); @@ -707,7 +710,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List if (episode == null || episode.isActivated()) return; if (Setting.getFlag() == 1) { episode.setActivated(true); - getEpisodeView().requestFocus(); + if (!isFullscreen()) getEpisodeView().requestFocus(); setEpisodeSelectedPosition(getEpisodePosition()); episode.setActivated(false); } else { @@ -896,6 +899,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List showDanmu(); } + private void showDanmu() { + if (Setting.isDanmu()) mBinding.danmaku.show(); + else mBinding.danmaku.hide(); + } + private void onDanmuAdd() { int line = Setting.getDanmuLine(3); line = Math.min(line + 1, 15); @@ -912,11 +920,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List setDanmuViewSettings(); } - private void showDanmu() { - if (Setting.isDanmu()) mBinding.danmaku.show(); - else mBinding.danmaku.hide(); - } - private void onEpisodes() { EpisodeDialog.create().episodes(getFlag().getEpisodes()).show(this); hideControl(); @@ -1125,6 +1128,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void hideInfo() { + mBinding.widget.info.setVisibility(View.GONE); showDisplayInfo(); } @@ -1449,6 +1453,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List Track.delete(getHistoryKey()); showError(event.getMsg()); mClock.setCallback(null); + mPlayers.reset(); mPlayers.stop(); startFlow(); } 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 5b8afb95d..56b928722 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 @@ -18,7 +18,6 @@ import androidx.media3.common.AudioAttributes; import androidx.media3.common.PlaybackException; import androidx.media3.common.Player; import androidx.media3.exoplayer.ExoPlayer; -import androidx.media3.exoplayer.analytics.AnalyticsListener; import androidx.media3.exoplayer.util.EventLogger; import androidx.media3.ui.PlayerView; @@ -59,7 +58,7 @@ import master.flame.danmaku.ui.widget.DanmakuView; import tv.danmaku.ijk.media.player.IMediaPlayer; import tv.danmaku.ijk.media.player.ui.IjkVideoView; -public class Players implements Player.Listener, IMediaPlayer.Listener, AnalyticsListener, ParseCallback, DrawHandler.Callback { +public class Players implements Player.Listener, IMediaPlayer.Listener, ParseCallback, DrawHandler.Callback { private static final String TAG = Players.class.getSimpleName(); @@ -121,6 +120,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic private void createSession(Activity activity) { session = new MediaSessionCompat(activity, "TV"); session.setCallback(SessionCallback.create(this)); + session.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS); session.setSessionActivity(PendingIntent.getActivity(App.get(), 0, new Intent(App.get(), activity.getClass()), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE)); MediaControllerCompat.setMediaController(activity, session.getController()); } @@ -138,7 +138,6 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic exoPlayer.addAnalyticsListener(new EventLogger()); exoPlayer.setHandleAudioBecomingNoisy(true); view.setRender(Setting.getRender()); - exoPlayer.addAnalyticsListener(this); exoPlayer.setPlayWhenReady(true); exoPlayer.addListener(this); view.setPlayer(exoPlayer); @@ -404,7 +403,6 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic } public void stop() { - reset(); if (isExo()) stopExo(); if (isIjk()) stopIjk(); session.setActive(false); @@ -674,7 +672,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic @Override public void onEvents(@NonNull Player player, @NonNull Player.Events events) { - if (!events.containsAny(Player.EVENT_PLAYBACK_STATE_CHANGED, Player.EVENT_PLAY_WHEN_READY_CHANGED, Player.EVENT_IS_PLAYING_CHANGED, Player.EVENT_TIMELINE_CHANGED, Player.EVENT_PLAYBACK_PARAMETERS_CHANGED, Player.EVENT_POSITION_DISCONTINUITY, Player.EVENT_REPEAT_MODE_CHANGED, Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED, Player.EVENT_MEDIA_METADATA_CHANGED)) return; + if (!events.containsAny(Player.EVENT_PLAYBACK_STATE_CHANGED, Player.EVENT_PLAY_WHEN_READY_CHANGED, Player.EVENT_IS_PLAYING_CHANGED, Player.EVENT_TIMELINE_CHANGED, Player.EVENT_PLAYBACK_PARAMETERS_CHANGED, Player.EVENT_POSITION_DISCONTINUITY, Player.EVENT_MEDIA_METADATA_CHANGED)) return; setPlaybackState(isPlaying() ? PlaybackStateCompat.STATE_PLAYING : PlaybackStateCompat.STATE_PAUSED); } diff --git a/app/src/mobile/AndroidManifest.xml b/app/src/mobile/AndroidManifest.xml index 2393f7b51..564c2d853 100644 --- a/app/src/mobile/AndroidManifest.xml +++ b/app/src/mobile/AndroidManifest.xml @@ -133,7 +133,7 @@ diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index bb3bff5c9..02360797c 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -674,6 +674,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom mEpgDataAdapter.setSelected(item); mViewModel.getUrl(mChannel, item); mPlayers.clear(); + mPlayers.stop(); showProgress(); hideEpg(); } @@ -733,6 +734,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom LiveConfig.get().setKeep(mChannel); mViewModel.getUrl(mChannel); mPlayers.clear(); + mPlayers.stop(); showProgress(); } @@ -774,6 +776,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom @Override public void setLive(Live item) { LiveConfig.get().setHome(item); + mPlayers.reset(); mPlayers.stop(); resetAdapter(); hideControl(); @@ -884,6 +887,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom private void onError(ErrorEvent event) { showError(event.getMsg()); + mPlayers.reset(); mPlayers.stop(); startFlow(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 09a995b46..98d2a69a4 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -492,6 +492,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.swipeLayout.setEnabled(false); mBinding.scroll.scrollTo(0, 0); mClock.setCallback(null); + mPlayers.reset(); mPlayers.stop(); getDetail(); } @@ -594,6 +595,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); updateHistory(episode, replay); mPlayers.clear(); + mPlayers.stop(); showProgress(); setMetadata(); hidePreview(); @@ -1357,6 +1359,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo Track.delete(getHistoryKey()); showError(event.getMsg()); mClock.setCallback(null); + mPlayers.reset(); mPlayers.stop(); startFlow(); }