diff options
author | Shraddha Basantwani <shraddha.basantwani@ittiam.com> | 2019-06-13 16:32:18 +0530 |
---|---|---|
committer | Shraddha Basantwani <shraddha.basantwani@ittiam.com> | 2019-11-19 15:05:24 +0530 |
commit | bdce36635a214edbeea97298735fc160508ead6e (patch) | |
tree | 20646ff901a6054ab7039e2cfdeafe25be8717d0 /src/com/android/tv/MainActivity.java | |
parent | 96eeb4afaecf004901940463ce5bd966951bd31a (diff) | |
download | TV-bdce36635a214edbeea97298735fc160508ead6e.tar.gz |
Select default language if CC is set to enabled.
Default language was not followed from System wide Captions setting
Test: make RunTvRoboTests ROBOTEST_FILTER=MainActivityRoboTest
Bug: 133225624
Change-Id: I423fb4f08d1afac67286bb41583b33d5d9abbbf4
Diffstat (limited to 'src/com/android/tv/MainActivity.java')
-rw-r--r-- | src/com/android/tv/MainActivity.java | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/src/com/android/tv/MainActivity.java b/src/com/android/tv/MainActivity.java index 62fc0cee..90c99906 100644 --- a/src/com/android/tv/MainActivity.java +++ b/src/com/android/tv/MainActivity.java @@ -275,6 +275,7 @@ public class MainActivity extends Activity private static final long LAZY_INITIALIZATION_DELAY = TimeUnit.SECONDS.toMillis(1); private static final int UNDEFINED_TRACK_INDEX = -1; + private static final int HIGHEST_PRIORITY = -1; private static final long START_UP_TIMER_RESET_THRESHOLD_MS = TimeUnit.SECONDS.toMillis(3); { @@ -1978,7 +1979,9 @@ public class MainActivity extends Activity if (enabled) { String language = mCaptionSettings.getLanguage(); String trackId = mCaptionSettings.getTrackId(); - int bestTrackIndex = findBestCaptionTrackIndex(tracks, language, trackId); + List<String> preferredLanguages = mCaptionSettings.getSystemPreferenceLanguageList(); + int bestTrackIndex = + findBestCaptionTrackIndex(tracks, language, preferredLanguages, trackId); if (bestTrackIndex != UNDEFINED_TRACK_INDEX) { selectCaptionTrack(selectedTrackId, tracks.get(bestTrackIndex), bestTrackIndex); return; @@ -2556,14 +2559,39 @@ public class MainActivity extends Activity return mTvView.getSelectedTrack(type); } - private static int findBestCaptionTrackIndex( - List<TvTrackInfo> tracks, String selectedLanguage, String selectedTrackId) { + @VisibleForTesting + static int findBestCaptionTrackIndex( + List<TvTrackInfo> tracks, + String selectedLanguage, + List<String> preferredLanguages, + String selectedTrackId) { int alternativeTrackIndex = UNDEFINED_TRACK_INDEX; + // Priority of selected alternative track, where -1 being the highest priority. + int alternativeTrackPriority = preferredLanguages.size(); for (int i = 0; i < tracks.size(); i++) { TvTrackInfo track = tracks.get(i); if (Utils.isEqualLanguage(track.getLanguage(), selectedLanguage)) { if (track.getId().equals(selectedTrackId)) { return i; + } else if (alternativeTrackPriority != HIGHEST_PRIORITY) { + alternativeTrackIndex = i; + alternativeTrackPriority = HIGHEST_PRIORITY; + } + } else { + // Select alternative track in order of preference + // 1. User language captions + // 2. System language captions + // 3. Other captions + int index = UNDEFINED_TRACK_INDEX; + for (int j = 0; j < preferredLanguages.size() ; j++) { + if (Utils.isEqualLanguage(track.getLanguage(), preferredLanguages.get(j))) { + index = j; + break; + } + } + if (index != UNDEFINED_TRACK_INDEX && index < alternativeTrackPriority) { + alternativeTrackIndex = i; + alternativeTrackPriority = index; } else if (alternativeTrackIndex == UNDEFINED_TRACK_INDEX) { alternativeTrackIndex = i; } |