aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/MainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/tv/MainActivity.java')
-rw-r--r--src/com/android/tv/MainActivity.java35
1 files changed, 19 insertions, 16 deletions
diff --git a/src/com/android/tv/MainActivity.java b/src/com/android/tv/MainActivity.java
index aeb51da4..62fc0cee 100644
--- a/src/com/android/tv/MainActivity.java
+++ b/src/com/android/tv/MainActivity.java
@@ -1975,25 +1975,12 @@ public class MainActivity extends Activity
mTvView.setClosedCaptionEnabled(enabled);
String selectedTrackId = getSelectedTrack(TvTrackInfo.TYPE_SUBTITLE);
- TvTrackInfo alternativeTrack = null;
- int alternativeTrackIndex = UNDEFINED_TRACK_INDEX;
if (enabled) {
String language = mCaptionSettings.getLanguage();
String trackId = mCaptionSettings.getTrackId();
- for (int i = 0; i < tracks.size(); i++) {
- TvTrackInfo track = tracks.get(i);
- if (Utils.isEqualLanguage(track.getLanguage(), language)) {
- if (track.getId().equals(trackId)) {
- selectCaptionTrack(selectedTrackId, track, i);
- return;
- } else if (alternativeTrack == null) {
- alternativeTrack = track;
- alternativeTrackIndex = i;
- }
- }
- }
- if (alternativeTrack != null) {
- selectCaptionTrack(selectedTrackId, alternativeTrack, alternativeTrackIndex);
+ int bestTrackIndex = findBestCaptionTrackIndex(tracks, language, trackId);
+ if (bestTrackIndex != UNDEFINED_TRACK_INDEX) {
+ selectCaptionTrack(selectedTrackId, tracks.get(bestTrackIndex), bestTrackIndex);
return;
}
}
@@ -2569,6 +2556,22 @@ public class MainActivity extends Activity
return mTvView.getSelectedTrack(type);
}
+ private static int findBestCaptionTrackIndex(
+ List<TvTrackInfo> tracks, String selectedLanguage, String selectedTrackId) {
+ int alternativeTrackIndex = UNDEFINED_TRACK_INDEX;
+ 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 (alternativeTrackIndex == UNDEFINED_TRACK_INDEX) {
+ alternativeTrackIndex = i;
+ }
+ }
+ }
+ return alternativeTrackIndex;
+ }
+
private void selectTrack(int type, TvTrackInfo track, int trackIndex) {
mTvView.selectTrack(type, track == null ? null : track.getId());
if (type == TvTrackInfo.TYPE_AUDIO) {