diff options
Diffstat (limited to 'src/com/android/tv/MainActivity.java')
-rw-r--r-- | src/com/android/tv/MainActivity.java | 35 |
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) { |