aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/MainActivity.java
diff options
context:
space:
mode:
authorShraddha Basantwani <shraddha.basantwani@ittiam.com>2019-06-13 16:32:18 +0530
committerShraddha Basantwani <shraddha.basantwani@ittiam.com>2019-11-19 15:05:24 +0530
commitbdce36635a214edbeea97298735fc160508ead6e (patch)
tree20646ff901a6054ab7039e2cfdeafe25be8717d0 /src/com/android/tv/MainActivity.java
parent96eeb4afaecf004901940463ce5bd966951bd31a (diff)
downloadTV-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.java34
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;
}