From 1d426eddada87a0eb70e8ea233f63f6d7b50d536 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 22 Feb 2025 18:41:24 +0800 Subject: [PATCH] Add danmakuLoad switch --- .../tv/ui/activity/SettingPlayerActivity.java | 7 +++++ .../res/layout/activity_setting_player.xml | 29 +++++++++++++++++++ .../java/com/fongmi/android/tv/Setting.java | 8 +++++ .../com/fongmi/android/tv/bean/Result.java | 3 +- app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + .../android/tv/ui/activity/VideoActivity.java | 2 +- .../tv/ui/fragment/SettingPlayerFragment.java | 7 +++++ .../java/com/fongmi/android/tv/utils/PiP.java | 4 +++ .../res/layout/fragment_setting_player.xml | 27 +++++++++++++++++ 11 files changed, 88 insertions(+), 2 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java index 2eaa3e888..6b2633b9a 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java @@ -54,6 +54,7 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B mBinding.bufferText.setText(String.valueOf(Setting.getBuffer())); mBinding.backgroundText.setText(getSwitch(Setting.isBackgroundOn())); mBinding.audioDecodeText.setText(getSwitch(Setting.isAudioPrefer())); + mBinding.danmakuLoadText.setText(getSwitch(Setting.isDanmakuLoad())); mBinding.rtspText.setText((rtsp = ResUtil.getStringArray(R.array.select_rtsp))[Setting.getRtsp()]); mBinding.scaleText.setText((scale = ResUtil.getStringArray(R.array.select_scale))[Setting.getScale()]); mBinding.renderText.setText((render = ResUtil.getStringArray(R.array.select_render))[Setting.getRender()]); @@ -73,6 +74,7 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B mBinding.caption.setOnLongClickListener(this::onCaption); mBinding.background.setOnClickListener(this::onBackground); mBinding.audioDecode.setOnClickListener(this::setAudioDecode); + mBinding.danmakuLoad.setOnClickListener(this::setDanmakuLoad); } private void setVisible() { @@ -150,6 +152,11 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B mBinding.audioDecodeText.setText(getSwitch(Setting.isAudioPrefer())); } + private void setDanmakuLoad(View view) { + Setting.putDanmakuLoad(!Setting.isDanmakuLoad()); + mBinding.danmakuLoadText.setText(getSwitch(Setting.isDanmakuLoad())); + } + private void onBackground(View view) { Setting.putBackground(Setting.isBackgroundOn() ? 0 : 1); mBinding.backgroundText.setText(getSwitch(Setting.isBackgroundOn())); diff --git a/app/src/leanback/res/layout/activity_setting_player.xml b/app/src/leanback/res/layout/activity_setting_player.xml index 500f098b8..b14a26884 100644 --- a/app/src/leanback/res/layout/activity_setting_player.xml +++ b/app/src/leanback/res/layout/activity_setting_player.xml @@ -234,6 +234,35 @@ + + + + + + + + 字幕样式 后台播放 音频软解 + 弹幕加载 隧道模式 缓冲时间 长按倍速 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 2d328fe83..d6ee97b41 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -92,6 +92,7 @@ 字幕樣式 背景播放 音訊軟解 + 彈幕載入 隧道模式 緩衝時間 長按倍速 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 392540e4c..ec667c38d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -93,6 +93,7 @@ Caption style Background play Audio software decode + Danmaku load Tunnel mode Buffer time Press speed 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 6680742b1..c662e2c4b 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 @@ -558,7 +558,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void checkDanmaku(String url) { mBinding.danmaku.release(); - mBinding.danmaku.setVisibility(url.isEmpty() ? View.GONE : View.VISIBLE); + mBinding.danmaku.setVisibility(mPiP.isInMode(this) || url.isEmpty() ? View.GONE : View.VISIBLE); if (!url.isEmpty()) App.execute(() -> mBinding.danmaku.prepare(new Parser(url), mDanmakuContext)); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java index 06200bacf..7146b4bd3 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java @@ -56,6 +56,7 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B mBinding.speedText.setText(format.format(Setting.getSpeed())); mBinding.bufferText.setText(String.valueOf(Setting.getBuffer())); mBinding.audioDecodeText.setText(getSwitch(Setting.isAudioPrefer())); + mBinding.danmakuLoadText.setText(getSwitch(Setting.isDanmakuLoad())); mBinding.caption.setVisibility(Setting.hasCaption() ? View.VISIBLE : View.GONE); mBinding.rtspText.setText((rtsp = ResUtil.getStringArray(R.array.select_rtsp))[Setting.getRtsp()]); mBinding.scaleText.setText((scale = ResUtil.getStringArray(R.array.select_scale))[Setting.getScale()]); @@ -77,6 +78,7 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B mBinding.caption.setOnLongClickListener(this::onCaption); mBinding.background.setOnClickListener(this::onBackground); mBinding.audioDecode.setOnClickListener(this::setAudioDecode); + mBinding.danmakuLoad.setOnClickListener(this::setDanmakuLoad); } private void onUa(View view) { @@ -159,6 +161,11 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B mBinding.audioDecodeText.setText(getSwitch(Setting.isAudioPrefer())); } + private void setDanmakuLoad(View view) { + Setting.putDanmakuLoad(!Setting.isDanmakuLoad()); + mBinding.danmakuLoadText.setText(getSwitch(Setting.isDanmakuLoad())); + } + @Override public void onHiddenChanged(boolean hidden) { if (!hidden) initView(); diff --git a/app/src/mobile/java/com/fongmi/android/tv/utils/PiP.java b/app/src/mobile/java/com/fongmi/android/tv/utils/PiP.java index 365869627..869512365 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/utils/PiP.java +++ b/app/src/mobile/java/com/fongmi/android/tv/utils/PiP.java @@ -46,6 +46,10 @@ public class PiP { this.builder = new PictureInPictureParams.Builder(); } + public boolean isInMode(Activity activity) { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && activity.isInPictureInPictureMode(); + } + public void update(Activity activity, View view) { if (noPiP()) return; Rect sourceRectHint = new Rect(); diff --git a/app/src/mobile/res/layout/fragment_setting_player.xml b/app/src/mobile/res/layout/fragment_setting_player.xml index 72bd7ad0e..e78a558d5 100644 --- a/app/src/mobile/res/layout/fragment_setting_player.xml +++ b/app/src/mobile/res/layout/fragment_setting_player.xml @@ -249,6 +249,33 @@ + + + + + + + +