From b367a4876e0c63c4139c5405400bff29aa6ffe8b Mon Sep 17 00:00:00 2001 From: Shraddha Basantwani Date: Wed, 13 Nov 2019 16:02:21 +0530 Subject: Refactor Caption Track Selection Test: m LiveTv Bug: 133225624 Change-Id: I8fab03ee7104cc8927f82125e9c04b8832bda26a --- src/com/android/tv/MainActivity.java | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) (limited to 'src/com/android/tv/MainActivity.java') 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 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) { -- cgit v1.2.3