aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDongwon Kang <dwkang@google.com>2014-08-04 14:04:29 +0900
committerJae Seo <jaeseo@google.com>2014-08-05 14:50:45 -0700
commitec9bd88036279df7421321b2e9945adf8f89db4b (patch)
tree0ef7a9f9e81cbe7d9fce582a7a996c47bd06f5ea /src
parent5f496abf04ad5de1df0fd371f1f61a445bc70c6b (diff)
downloadTV-ec9bd88036279df7421321b2e9945adf8f89db4b.tar.gz
Applying framework change for making selected tracks identifiable in TV and sample app.
Related chage: I226f75e697b0ce52b44db7471660f6d9f646f6f9 Change-Id: Ibeed892624a9675c59613148d47b77d3f857cc9b
Diffstat (limited to 'src')
-rw-r--r--src/com/android/tv/TvActivity.java13
-rw-r--r--src/com/android/tv/ui/TunableTvView.java57
2 files changed, 46 insertions, 24 deletions
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<TvTrackInfo> 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<TvTrackInfo> 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<TvTrackInfo> tracks) {
+ public void onTracksChanged(String inputId, List<TvTrackInfo> 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<TvTrackInfo> 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<TvTrackInfo> 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<TvTrackInfo> getTracks() {
- return mTvView.getTracks();
+ public List<TvTrackInfo> 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) {