From 31a12fdb3bc1b90fa53918a4fe641abd50836e82 Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 3 Sep 2024 00:11:06 +0800 Subject: [PATCH] Keep subtitle text size --- .../com/fongmi/android/tv/ui/activity/CastActivity.java | 8 +------- .../com/fongmi/android/tv/ui/activity/LiveActivity.java | 8 +------- .../com/fongmi/android/tv/ui/activity/VideoActivity.java | 8 +------- app/src/main/java/com/fongmi/android/tv/Setting.java | 8 ++++++++ .../java/com/fongmi/android/tv/player/exo/ExoUtil.java | 8 ++++++++ .../com/fongmi/android/tv/ui/dialog/SubtitleDialog.java | 3 +++ .../com/fongmi/android/tv/ui/activity/LiveActivity.java | 8 +------- .../com/fongmi/android/tv/ui/activity/VideoActivity.java | 8 +------- 8 files changed, 24 insertions(+), 35 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 361c853dc..c8f29bf76 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 @@ -85,7 +85,6 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List mParser = new DIDLParser(); mR1 = this::hideControl; mR2 = this::setTraffic; - setSubtitleView(); setVideoView(); checkAction(); } @@ -135,6 +134,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List private void setVideoView() { mPlayers.init(mBinding.exo); setScale(scale = Setting.getScale()); + ExoUtil.setSubtitleView(mBinding.exo); findViewById(R.id.timeBar).setNextFocusUpId(R.id.reset); mBinding.control.speed.setText(mPlayers.getSpeedText()); mBinding.control.decode.setText(mPlayers.getDecodeText()); @@ -142,12 +142,6 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List mBinding.control.reset.setText(ResUtil.getStringArray(R.array.select_reset)[0]); } - private void setSubtitleView() { - mBinding.exo.getSubtitleView().setApplyEmbeddedFontSizes(false); - mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle()); - mBinding.exo.getSubtitleView().setApplyEmbeddedStyles(!Setting.isCaption()); - } - private void setDecode() { mBinding.control.decode.setText(mPlayers.getDecodeText()); } 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 c11420ade..786ff7cba 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 @@ -132,7 +132,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick mR4 = this::hideUI; Server.get().start(); setRecyclerView(); - setSubtitleView(); setVideoView(); setViewModel(); checkLive(); @@ -182,6 +181,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void setVideoView() { mPlayers.init(mBinding.exo); setScale(Setting.getLiveScale()); + ExoUtil.setSubtitleView(mBinding.exo); findViewById(R.id.timeBar).setNextFocusUpId(R.id.player); mBinding.control.invert.setActivated(Setting.isInvert()); mBinding.control.across.setActivated(Setting.isAcross()); @@ -192,12 +192,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick mBinding.control.home.setVisibility(LiveConfig.isOnly() ? View.GONE : View.VISIBLE); } - private void setSubtitleView() { - mBinding.exo.getSubtitleView().setApplyEmbeddedFontSizes(false); - mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle()); - mBinding.exo.getSubtitleView().setApplyEmbeddedStyles(!Setting.isCaption()); - } - private void setDecode() { mBinding.control.decode.setText(mPlayers.getDecodeText()); } 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 b0f7165fb..adc7055b6 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 @@ -285,7 +285,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mR4 = this::showEmpty; setBackground(false); setRecyclerView(); - setSubtitleView(); setVideoView(); setViewModel(); checkCast(); @@ -374,17 +373,12 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void setVideoView() { mPlayers.init(mBinding.exo); + ExoUtil.setSubtitleView(mBinding.exo); mBinding.control.decode.setText(mPlayers.getDecodeText()); mBinding.control.speed.setEnabled(mPlayers.canAdjustSpeed()); mBinding.control.reset.setText(ResUtil.getStringArray(R.array.select_reset)[Setting.getReset()]); } - private void setSubtitleView() { - mBinding.exo.getSubtitleView().setApplyEmbeddedFontSizes(false); - mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle()); - mBinding.exo.getSubtitleView().setApplyEmbeddedStyles(!Setting.isCaption()); - } - private void setDecode() { mBinding.control.decode.setText(mPlayers.getDecodeText()); } diff --git a/app/src/main/java/com/fongmi/android/tv/Setting.java b/app/src/main/java/com/fongmi/android/tv/Setting.java index 43474d02d..326f0a36c 100644 --- a/app/src/main/java/com/fongmi/android/tv/Setting.java +++ b/app/src/main/java/com/fongmi/android/tv/Setting.java @@ -257,6 +257,14 @@ public class Setting { Prefers.put("speed", speed); } + public static float getSubtitleTextSize() { + return Prefers.getFloat("subtitle_text_size"); + } + + public static void putSubtitleTextSize(float size) { + Prefers.put("subtitle_text_size", size); + } + public static float getThumbnail() { return 0.3f * getQuality() + 0.4f; } diff --git a/app/src/main/java/com/fongmi/android/tv/player/exo/ExoUtil.java b/app/src/main/java/com/fongmi/android/tv/player/exo/ExoUtil.java index 552f084e0..1465cb202 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/exo/ExoUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/exo/ExoUtil.java @@ -25,6 +25,7 @@ import androidx.media3.exoplayer.source.MediaSource; import androidx.media3.exoplayer.trackselection.DefaultTrackSelector; import androidx.media3.exoplayer.trackselection.TrackSelector; import androidx.media3.ui.CaptionStyleCompat; +import androidx.media3.ui.PlayerView; import com.fongmi.android.tv.App; import com.fongmi.android.tv.BuildConfig; @@ -85,6 +86,13 @@ public class ExoUtil { setTrackParameters(player, group, trackIndices); } + public static void setSubtitleView(PlayerView exo) { + exo.getSubtitleView().setStyle(getCaptionStyle()); + exo.getSubtitleView().setApplyEmbeddedFontSizes(false); + exo.getSubtitleView().setApplyEmbeddedStyles(!Setting.isCaption()); + if (Setting.getSubtitleTextSize() > 0) exo.getSubtitleView().setFractionalTextSize(Setting.getSubtitleTextSize()); + } + public static String getMimeType(String path) { if (TextUtils.isEmpty(path)) return ""; if (path.endsWith(".vtt")) return MimeTypes.TEXT_VTT; diff --git a/app/src/main/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java b/app/src/main/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java index 3d7188e19..0ca8cbfdd 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java @@ -11,6 +11,7 @@ import androidx.fragment.app.FragmentActivity; import androidx.media3.ui.SubtitleView; import androidx.viewbinding.ViewBinding; +import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.databinding.DialogSubtitleBinding; import com.fongmi.android.tv.utils.ResUtil; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; @@ -58,10 +59,12 @@ public final class SubtitleDialog extends BaseDialog { private void onLarge(View view) { subtitleView.addTextSize(0.002f); + Setting.putSubtitleTextSize(subtitleView.getTextSize()); } private void onSmall(View view) { subtitleView.subTextSize(0.002f); + Setting.putSubtitleTextSize(subtitleView.getTextSize()); } private void onReset(View view) { 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 da4da3cf5..333e19071 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 @@ -157,7 +157,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List Server.get().start(); setForeground(true); setRecyclerView(); - setSubtitleView(); setVideoView(); setViewModel(); checkLive(); @@ -201,6 +200,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List private void setVideoView() { mPlayers.init(mBinding.exo); setScale(Setting.getLiveScale()); + ExoUtil.setSubtitleView(mBinding.exo); mBinding.control.action.invert.setActivated(Setting.isInvert()); mBinding.control.action.across.setActivated(Setting.isAcross()); mBinding.control.action.change.setActivated(Setting.isChange()); @@ -211,12 +211,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List mBinding.video.addOnLayoutChangeListener((view, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> mPiP.update(getActivity(), view)); } - private void setSubtitleView() { - mBinding.exo.getSubtitleView().setApplyEmbeddedFontSizes(false); - mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle()); - mBinding.exo.getSubtitleView().setApplyEmbeddedStyles(!Setting.isCaption()); - } - private void setDecode() { mBinding.control.action.decode.setText(mPlayers.getDecodeText()); } 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 9e19f2c6c..26cbdf313 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 @@ -295,7 +295,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mPiP = new PiP(); setForeground(true); setRecyclerView(); - setSubtitleView(); setVideoView(); setViewModel(); showProgress(); @@ -368,6 +367,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void setVideoView() { mPlayers.init(mBinding.exo); + ExoUtil.setSubtitleView(mBinding.exo); if (isPort() && ResUtil.isLand(this)) enterFullscreen(); mBinding.control.action.decode.setText(mPlayers.getDecodeText()); mBinding.control.action.speed.setEnabled(mPlayers.canAdjustSpeed()); @@ -383,12 +383,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } } - private void setSubtitleView() { - mBinding.exo.getSubtitleView().setApplyEmbeddedFontSizes(false); - mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle()); - mBinding.exo.getSubtitleView().setApplyEmbeddedStyles(!Setting.isCaption()); - } - private void setDecode() { mBinding.control.action.decode.setText(mPlayers.getDecodeText()); }