[Android] Preferences : add subtitles appearance options

Alexandre Perraud git at videolan.org
Fri Jul 8 11:30:41 CEST 2016


vlc-android | branch: 2.0.x | Alexandre Perraud <4leyx4ndre at gmail.com> | Thu Jul  7 17:19:59 2016 +0200| [32d2557021113a994258f392ca51025b97287df8] | committer: Alexandre Perraud

Preferences : add subtitles appearance options

(cherry picked from commit a3c0fdc2aff698e94bc1ce278f5f0a665fa281d9)

> https://code.videolan.org/videolan/vlc-android/commit/32d2557021113a994258f392ca51025b97287df8
---

 vlc-android/res/values/arrays.xml                  | 31 ++++++++++++++++
 vlc-android/res/values/strings.xml                 | 12 ++++++
 vlc-android/res/xml/preferences_ui.xml             | 43 +++++++++++++++++-----
 .../vlc/gui/preferences/PreferencesUi.java         | 22 ++++++++++-
 .../src/org/videolan/vlc/util/VLCOptions.java      | 11 ++++++
 5 files changed, 108 insertions(+), 11 deletions(-)

diff --git a/vlc-android/res/values/arrays.xml b/vlc-android/res/values/arrays.xml
index f713f93..0fba72e 100644
--- a/vlc-android/res/values/arrays.xml
+++ b/vlc-android/res/values/arrays.xml
@@ -145,4 +145,35 @@
         <item>urd</item>
         <item>vie</item>
     </string-array>
+
+    <string-array name="subtitles_size_entries">
+        <item>@string/subtitles_size_small</item>
+        <item>@string/subtitles_size_normal</item>
+        <item>@string/subtitles_size_big</item>
+        <item>@string/subtitles_size_huge</item>
+    </string-array>
+
+    <string-array name="subtitles_size_values">
+        <item>19</item>
+        <item>16</item>
+        <item>13</item>
+        <item>10</item>
+    </string-array>
+
+    <string-array name="subtitles_color_entries">
+        <item>@string/subtitles_color_white</item>
+        <item>@string/subtitles_color_pink</item>
+        <item>@string/subtitles_color_blue</item>
+        <item>@string/subtitles_color_yellow</item>
+        <item>@string/subtitles_color_green</item>
+    </string-array>
+
+    <string-array name="subtitles_color_values">
+        <item>16777215</item>
+        <item>16711935</item>
+        <item>65535</item>
+        <item>16776960</item>
+        <item>65280</item>
+    </string-array>
+
 </resources>
\ No newline at end of file
diff --git a/vlc-android/res/values/strings.xml b/vlc-android/res/values/strings.xml
index 25ba585..66e9088 100644
--- a/vlc-android/res/values/strings.xml
+++ b/vlc-android/res/values/strings.xml
@@ -394,6 +394,18 @@
     <string name="video_min_group_length_first">First letter only</string>
     <string name="video_min_group_length_short">Short number of letters (6)</string>
     <string name="video_min_group_length_long">Long number of letters (9)</string>
+    <string name="subtitles_size_title">Subtitles Size</string>
+    <string name="subtitles_size_small">Small</string>
+    <string name="subtitles_size_normal">Normal</string>
+    <string name="subtitles_size_big">Big</string>
+    <string name="subtitles_size_huge">Huge</string>
+    <string name="subtitles_color_title">Subtitles Color</string>
+    <string name="subtitles_color_white">White</string>
+    <string name="subtitles_color_pink">Pink</string>
+    <string name="subtitles_color_blue">Blue</string>
+    <string name="subtitles_color_yellow">Yellow</string>
+    <string name="subtitles_color_green">Green</string>
+    <string name="subtitles_background_title">Subtitles Background</string>
 
     <!--Accessibility-->
     <string name="more_actions">More Actions</string>
diff --git a/vlc-android/res/xml/preferences_ui.xml b/vlc-android/res/xml/preferences_ui.xml
index e044c0c..ad05565 100644
--- a/vlc-android/res/xml/preferences_ui.xml
+++ b/vlc-android/res/xml/preferences_ui.xml
@@ -17,7 +17,8 @@
         android:persistent="true"
         android:summary="@string/video_min_group_length_summary"
         android:title="@string/video_min_group_length_title" />
-    <PreferenceCategory android:title="@string/interface_gui" >
+
+    <PreferenceCategory android:title="@string/interface_gui">
         <CheckBoxPreference
             android:key="tv_ui"
             android:summary="@string/tv_ui_summary"
@@ -40,14 +41,8 @@
             android:persistent="true"
             android:title="@string/audio_title_alignment" />
     </PreferenceCategory>
-    <PreferenceCategory android:title="@string/interface_controls" >
-        <android.support.v14.preference.MultiSelectListPreference
-            android:dialogTitle="@string/preferences_languages_download"
-            android:entries="@array/language_entries"
-            android:entryValues="@array/language_values"
-            android:key="languages_download_list"
-            android:summary="@string/list_languages_download_summary"
-            android:title="@string/list_languages_download_title" />
+
+    <PreferenceCategory android:title="@string/interface_controls">
         <CheckBoxPreference
             android:defaultValue="false"
             android:key="save_brightness"
@@ -85,7 +80,35 @@
             android:title="@string/enable_steal_remote_control" />
     </PreferenceCategory>
 
-    <PreferenceCategory android:title="@string/interface_secondary_display_category_title" >
+    <PreferenceCategory android:title="@string/subtitles">
+        <ListPreference
+            android:defaultValue="16"
+            android:entries="@array/subtitles_size_entries"
+            android:entryValues="@array/subtitles_size_values"
+            android:key="subtitles_size"
+            android:persistent="true"
+            android:title="@string/subtitles_size_title" />
+        <ListPreference
+            android:defaultValue="16777215"
+            android:entries="@array/subtitles_color_entries"
+            android:entryValues="@array/subtitles_color_values"
+            android:key="subtitles_color"
+            android:persistent="true"
+            android:title="@string/subtitles_color_title" />
+        <CheckBoxPreference
+            android:defaultValue="false"
+            android:key="subtitles_background"
+            android:title="@string/subtitles_background_title" />
+        <android.support.v14.preference.MultiSelectListPreference
+            android:dialogTitle="@string/preferences_languages_download"
+            android:entries="@array/language_entries"
+            android:entryValues="@array/language_values"
+            android:key="languages_download_list"
+            android:summary="@string/list_languages_download_summary"
+            android:title="@string/list_languages_download_title" />
+    </PreferenceCategory>
+
+    <PreferenceCategory android:title="@string/interface_secondary_display_category_title">
         <Preference android:summary="@string/interface_secondary_display_category_summary" />
 
         <CheckBoxPreference
diff --git a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.java b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.java
index 69ef6b8..f27591f 100644
--- a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.java
+++ b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.java
@@ -23,6 +23,7 @@
 
 package org.videolan.vlc.gui.preferences;
 
+import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.TwoStatePreference;
@@ -30,8 +31,9 @@ import android.support.v7.preference.TwoStatePreference;
 import org.videolan.libvlc.util.AndroidUtil;
 import org.videolan.vlc.PlaybackService;
 import org.videolan.vlc.R;
+import org.videolan.vlc.util.VLCInstance;
 
-public class PreferencesUi extends BasePreferenceFragment {
+public class PreferencesUi extends BasePreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
 
     @Override
     protected int getXml() {
@@ -44,6 +46,12 @@ public class PreferencesUi extends BasePreferenceFragment {
     }
 
     @Override
+    public void onStart() {
+        super.onStart();
+        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
+    }
+
+    @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
@@ -52,6 +60,18 @@ public class PreferencesUi extends BasePreferenceFragment {
     }
 
     @Override
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+        switch (key){
+            case "subtitles_size":
+            case "subtitles_color":
+            case "subtitles_background":
+                VLCInstance.restart();
+                if (getActivity() != null )
+                    ((PreferencesActivity)getActivity()).restartMediaPlayer();
+        }
+    }
+
+    @Override
     public boolean onPreferenceTreeClick(Preference preference) {
         if (preference.getKey() == null)
             return false;
diff --git a/vlc-android/src/org/videolan/vlc/util/VLCOptions.java b/vlc-android/src/org/videolan/vlc/util/VLCOptions.java
index 5ab60ee..26f1dd5 100644
--- a/vlc-android/src/org/videolan/vlc/util/VLCOptions.java
+++ b/vlc-android/src/org/videolan/vlc/util/VLCOptions.java
@@ -77,6 +77,10 @@ public class VLCOptions {
         else if (networkCaching < 0)
             networkCaching = 0;
 
+        final String freetypeRelFontsize = pref.getString("subtitles_size", "16");
+        final String freetypeColor = pref.getString("subtitles_color", "16777215");
+        final boolean freetypeBackground = pref.getBoolean("subtitles_background", false);
+
         /* CPU intensive plugin, setting for slow devices */
         options.add(timeStreching ? "--audio-time-stretch" : "--no-audio-time-stretch");
         options.add("--avcodec-skiploopfilter");
@@ -96,6 +100,13 @@ public class VLCOptions {
         options.add("--audio-resampler");
         options.add(getResampler());
 
+        options.add("--freetype-rel-fontsize=" + freetypeRelFontsize);
+        options.add("--freetype-color=" + freetypeColor);
+        if (freetypeBackground)
+            options.add("--freetype-background-opacity=128");
+        else
+            options.add("--freetype-background-opacity=0");
+
         /* Configure keystore */
         options.add("--keystore");
         if (AndroidUtil.isMarshMallowOrLater())



More information about the Android mailing list