From ec9bd88036279df7421321b2e9945adf8f89db4b Mon Sep 17 00:00:00 2001 From: Dongwon Kang Date: Mon, 4 Aug 2014 14:04:29 +0900 Subject: Applying framework change for making selected tracks identifiable in TV and sample app. Related chage: I226f75e697b0ce52b44db7471660f6d9f646f6f9 Change-Id: Ibeed892624a9675c59613148d47b77d3f857cc9b --- src/com/android/tv/TvActivity.java | 13 +++----- src/com/android/tv/ui/TunableTvView.java | 57 +++++++++++++++++++++++--------- 2 files changed, 46 insertions(+), 24 deletions(-) (limited to 'src/com/android') diff --git a/src/com/android/tv/TvActivity.java b/src/com/android/tv/TvActivity.java index 770ad0b8..e5127afc 100644 --- a/src/com/android/tv/TvActivity.java +++ b/src/com/android/tv/TvActivity.java @@ -1228,14 +1228,11 @@ public class TvActivity extends Activity implements AudioManager.OnAudioFocusCha // For now, we just select the first subtitle track. // TODO: show audio/subtitle language options to user and handle the user's // selection. - List tracks = mTvView.getTracks(); - for (TvTrackInfo track : tracks) { - Log.d(TAG, "lang - " + track.getLanguage()); - if (track.getType() == TvTrackInfo.TYPE_SUBTITLE) { - Log.d(TAG, "selectTrack " + track); - mTvView.selectTrack(track); - break; - } + List tracks = mTvView.getTracks(TvTrackInfo.TYPE_SUBTITLE); + if (!tracks.isEmpty()) { + Log.d(TAG, "lang - " + tracks.get(0).getLanguage()); + Log.d(TAG, "selectTrack " + tracks.get(0)); + mTvView.selectTrack(TvTrackInfo.TYPE_SUBTITLE, tracks.get(0).getId()); } return true; } diff --git a/src/com/android/tv/ui/TunableTvView.java b/src/com/android/tv/ui/TunableTvView.java index b0db3a1d..141a340c 100644 --- a/src/com/android/tv/ui/TunableTvView.java +++ b/src/com/android/tv/ui/TunableTvView.java @@ -95,26 +95,51 @@ public class TunableTvView extends FrameLayout implements StreamInfo { } @Override - public void onTrackInfoChanged(String inputId, List tracks) { + public void onTracksChanged(String inputId, List tracks) { + mHasClosedCaption = false; + for (TvTrackInfo track : tracks) { + if (track.getType() == TvTrackInfo.TYPE_SUBTITLE) { + mHasClosedCaption = true; + break; + } + } if (mOnTuneListener != null) { mOnTuneListener.onStreamInfoChanged(TunableTvView.this); } } @Override - public void onTrackSelectionChanged(String inputId, - List selectedTracks) { - for (TvTrackInfo track : selectedTracks) { - int type = track.getType(); + public void onTrackSelected(String inputId, int type, String trackId) { + if (trackId == null) { + // A track is unselected. if (type == TvTrackInfo.TYPE_VIDEO) { - mVideoWidth = track.getVideoWidth(); - mVideoHeight = track.getVideoHeight(); - mVideoFormat = Utils.getVideoDefinitionLevelFromSize( - mVideoWidth, mVideoHeight); + mVideoWidth = 0; + mVideoHeight = 0; + mVideoFormat = StreamInfo.VIDEO_DEFINITION_LEVEL_UNKNOWN; } else if (type == TvTrackInfo.TYPE_AUDIO) { - mAudioChannelCount = track.getAudioChannelCount(); - } else if (type == TvTrackInfo.TYPE_SUBTITLE) { - mHasClosedCaption = true; + mAudioChannelCount = StreamInfo.AUDIO_CHANNEL_COUNT_UNKNOWN; + } + } else { + List tracks = getTracks(type); + boolean trackFound = false; + if (tracks != null) { + for (TvTrackInfo track : getTracks(type)) { + if (track.getId().equals(trackId)) { + if (type == TvTrackInfo.TYPE_VIDEO) { + mVideoWidth = track.getVideoWidth(); + mVideoHeight = track.getVideoHeight(); + mVideoFormat = Utils.getVideoDefinitionLevelFromSize( + mVideoWidth, mVideoHeight); + } else if (type == TvTrackInfo.TYPE_AUDIO) { + mAudioChannelCount = track.getAudioChannelCount(); + } + trackFound = true; + break; + } + } + } + if (!trackFound) { + Log.w(TAG, "Invalid track ID: " + trackId); } } if (mOnTuneListener != null) { @@ -316,12 +341,12 @@ public class TunableTvView extends FrameLayout implements StreamInfo { mTvView.setOnUnhandledInputEventListener(listener); } - public List getTracks() { - return mTvView.getTracks(); + public List getTracks(int type) { + return mTvView.getTracks(type); } - public void selectTrack(TvTrackInfo track) { - mTvView.selectTrack(track); + public void selectTrack(int type, String trackId) { + mTvView.selectTrack(type, trackId); } private void block(int reason) { -- cgit v1.2.3