From 5ee5be36672bf95dcf5db4eea81fe67a742bf53b Mon Sep 17 00:00:00 2001 From: Shra1V32 Date: Wed, 9 Jul 2025 14:26:11 +0530 Subject: [PATCH] feat: Auto-load option for external subtitles for network videos (#664) Adds a new setting to automatically search for and load subtitles matching the video filename (e.g., video.srt for video.mp4) when playing network videos. This improves convenience by reducing the need for manual subtitle selection. Disabled by default; can be enabled via a toggle in Subtitles settings. --- app/src/main/java/com/brouken/player/PlayerActivity.java | 4 ++-- app/src/main/java/com/brouken/player/Prefs.java | 3 +++ app/src/main/res/values/strings.xml | 3 +++ app/src/main/res/xml/root_preferences.xml | 7 +++++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/brouken/player/PlayerActivity.java b/app/src/main/java/com/brouken/player/PlayerActivity.java index f66856e4..bcef352c 100644 --- a/app/src/main/java/com/brouken/player/PlayerActivity.java +++ b/app/src/main/java/com/brouken/player/PlayerActivity.java @@ -1973,7 +1973,7 @@ void searchSubtitles() { if (mPrefs.mediaUri == null) return; - if (Utils.isSupportedNetworkUri(mPrefs.mediaUri) && Utils.isProgressiveContainerUri(mPrefs.mediaUri)) { + if (mPrefs.subtitleAutoSearch && Utils.isSupportedNetworkUri(mPrefs.mediaUri) && Utils.isProgressiveContainerUri(mPrefs.mediaUri)) { SubtitleUtils.clearCache(this); if (SubtitleFinder.isUriCompatible(mPrefs.mediaUri)) { subtitleFinder = new SubtitleFinder(PlayerActivity.this, mPrefs.mediaUri); @@ -2317,4 +2317,4 @@ private void updateButtonRotation() { } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/brouken/player/Prefs.java b/app/src/main/java/com/brouken/player/Prefs.java index 54a3f344..ea95e7a9 100644 --- a/app/src/main/java/com/brouken/player/Prefs.java +++ b/app/src/main/java/com/brouken/player/Prefs.java @@ -47,6 +47,7 @@ class Prefs { private static final String PREF_KEY_LANGUAGE_AUDIO = "languageAudio"; private static final String PREF_KEY_SUBTITLE_STYLE_EMBEDDED = "subtitleStyleEmbedded"; private static final String PREF_KEY_SUBTITLE_STYLE_BOLD = "subtitleStyleBold"; + private static final String PREF_KEY_SUBTITLE_AUTO_SEARCH = "subtitleAutoSearch"; public static final String TRACK_DEFAULT = "default"; public static final String TRACK_DEVICE = "device"; @@ -81,6 +82,7 @@ class Prefs { public String languageAudio = TRACK_DEVICE; public boolean subtitleStyleEmbedded = true; public boolean subtitleStyleBold = false; + public boolean subtitleAutoSearch = false; private LinkedHashMap positions; @@ -130,6 +132,7 @@ public void loadUserPreferences() { languageAudio = mSharedPreferences.getString(PREF_KEY_LANGUAGE_AUDIO, languageAudio); subtitleStyleEmbedded = mSharedPreferences.getBoolean(PREF_KEY_SUBTITLE_STYLE_EMBEDDED, subtitleStyleEmbedded); subtitleStyleBold = mSharedPreferences.getBoolean(PREF_KEY_SUBTITLE_STYLE_BOLD, subtitleStyleBold); + subtitleAutoSearch = mSharedPreferences.getBoolean(PREF_KEY_SUBTITLE_AUTO_SEARCH, subtitleAutoSearch); } public void updateMedia(final Context context, final Uri uri, final String type) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 511466aa..dba1d955 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -58,4 +58,7 @@ Bold style Use bold typeface as regular Use default regular typeface + Guess subtitles from video name + For network videos, try to load subtitles with common names (e.g., video.srt) + Do not guess subtitles from video name \ No newline at end of file diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 73cd1b33..6711df48 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -62,6 +62,13 @@ android:summaryOff="@string/pref_subtitle_style_bold_off" app:title="@string/pref_subtitle_style_bold" /> + +