From da5f0f7d7b5ea478394fea24b01bc6ddfee8e327 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 1 Mar 2025 16:20:19 +0800 Subject: [PATCH] Add local danmaku load --- .../com/fongmi/android/tv/ui/activity/VideoActivity.java | 2 +- app/src/leanback/res/layout/dialog_danmaku.xml | 8 ++++++++ app/src/leanback/res/layout/dialog_track.xml | 2 ++ .../main/java/com/fongmi/android/tv/player/Players.java | 4 ---- .../com/fongmi/android/tv/ui/activity/VideoActivity.java | 2 +- .../com/fongmi/android/tv/ui/dialog/ControlDialog.java | 2 +- 6 files changed, 13 insertions(+), 7 deletions(-) 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 b9ed646a2..f9ccf5a31 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 @@ -376,6 +376,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List ExoUtil.setSubtitleView(mBinding.exo); mPlayers.setDanmakuView(mBinding.danmaku); mBinding.control.decode.setText(mPlayers.getDecodeText()); + mBinding.control.danmaku.setVisibility(Setting.isDanmakuLoad() ? View.VISIBLE : View.GONE); mBinding.control.reset.setText(ResUtil.getStringArray(R.array.select_reset)[Setting.getReset()]); } @@ -1095,7 +1096,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mBinding.control.text.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_TEXT) || mPlayers.isVod() ? View.VISIBLE : View.GONE); mBinding.control.audio.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE); mBinding.control.video.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_VIDEO) ? View.VISIBLE : View.GONE); - mBinding.control.danmaku.setVisibility(mPlayers.haveDanmaku() ? View.VISIBLE : View.GONE); } private void setMetadata() { diff --git a/app/src/leanback/res/layout/dialog_danmaku.xml b/app/src/leanback/res/layout/dialog_danmaku.xml index 9bade521b..6a68cbc76 100644 --- a/app/src/leanback/res/layout/dialog_danmaku.xml +++ b/app/src/leanback/res/layout/dialog_danmaku.xml @@ -22,6 +22,14 @@ android:textColor="@color/grey_900" android:textSize="16sp" /> + + @@ -37,6 +38,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="?attr/selectableItemBackgroundBorderless" + android:focusable="true" android:src="@drawable/ic_action_subtitle" android:visibility="gone" tools:visibility="visible" /> 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 39b581abc..953f0665b 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 @@ -235,10 +235,6 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call return exoPlayer != null && ExoUtil.haveTrack(exoPlayer.getCurrentTracks(), type); } - public boolean haveDanmaku() { - return danmakus != null && !danmakus.isEmpty(); - } - public boolean isDanmakuPrepared() { return (danmaku != null && danmaku.isPrepared()); } 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 850432d6e..bc8b749db 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 @@ -370,6 +370,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mPlayers.setDanmakuView(mBinding.danmaku); if (isPort() && ResUtil.isLand(this)) enterFullscreen(); mBinding.control.action.decode.setText(mPlayers.getDecodeText()); + mBinding.control.action.danmaku.setVisibility(Setting.isDanmakuLoad() ? View.VISIBLE : View.GONE); mBinding.control.action.reset.setText(ResUtil.getStringArray(R.array.select_reset)[Setting.getReset()]); mBinding.video.addOnLayoutChangeListener((view, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> mPiP.update(getActivity(), view)); } @@ -1149,7 +1150,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.action.text.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_TEXT) || mPlayers.isVod() ? View.VISIBLE : View.GONE); mBinding.control.action.audio.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE); mBinding.control.action.video.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_VIDEO) ? View.VISIBLE : View.GONE); - mBinding.control.action.danmaku.setVisibility(mPlayers.haveDanmaku() ? View.VISIBLE : View.GONE); if (mControlDialog != null && mControlDialog.isVisible()) mControlDialog.setTrackVisible(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java index 31902babc..953ab5ea9 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java @@ -178,6 +178,7 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis binding.speed.setValue(Math.max(player.getSpeed(), 0.5f)); binding.player.setText(parent.control.action.player.getText()); binding.decode.setVisibility(parent.control.action.decode.getVisibility()); + binding.danmaku.setVisibility(parent.control.action.danmaku.getVisibility()); } public void setParseVisible(boolean visible) { @@ -189,7 +190,6 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis binding.text.setVisibility(parent.control.action.text.getVisibility()); binding.audio.setVisibility(parent.control.action.audio.getVisibility()); binding.video.setVisibility(parent.control.action.video.getVisibility()); - binding.danmaku.setVisibility(parent.control.action.danmaku.getVisibility()); binding.track.setVisibility(binding.text.getVisibility() == View.GONE && binding.audio.getVisibility() == View.GONE && binding.video.getVisibility() == View.GONE ? View.GONE : View.VISIBLE); }