From 64e78adc196788add2c7dba0d489380188e7aeb8 Mon Sep 17 00:00:00 2001 From: Keyvan Amiri Date: Thu, 12 May 2016 14:55:53 -0700 Subject: [PATCH 1/2] Showcase app: Fixed video fragment not showing video. Updated Settings and deprecated APIs for the app to be installable on L. Video player was not being prepared for asynchronous playing after the media source was set. Used the same preparation module for both the Music and Video players. Also, updated Settings to include a switch widget. Depredatecd some of the APIs to level 1 to be able to install app on L. Change-Id: I3bd8b266be028e80d87367a2c3c8a8174e924b92 --- .../app/media/MediaPlayerGlue.java | 40 +++++++++++++------ .../MusicConsumptionExampleFragment.java | 13 ++++-- .../VideoConsumptionExampleFragment.java | 1 + .../app/src/main/res/xml/prefs.xml | 6 +-- 4 files changed, 41 insertions(+), 19 deletions(-) diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/MediaPlayerGlue.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/MediaPlayerGlue.java index 7713c1a0c..f64899e5d 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/MediaPlayerGlue.java +++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/MediaPlayerGlue.java @@ -133,8 +133,10 @@ public abstract class MediaPlayerGlue extends PlaybackControlGlue implements */ public void setupControlsRowPresenter(PlaybackControlsRowPresenter presenter) { // TODO: hahnr@ move into resources - presenter.setProgressColor(getContext().getColor(R.color.player_progress_color)); - presenter.setBackgroundColor(getContext().getColor(R.color.player_background_color)); + presenter.setProgressColor(getContext().getResources().getColor( + R.color.player_progress_color)); + presenter.setBackgroundColor(getContext().getResources().getColor( + R.color.player_background_color)); } @Override public PlaybackControlsRowPresenter createControlsRowAndPresenter() { @@ -284,13 +286,34 @@ public abstract class MediaPlayerGlue extends PlaybackControlGlue implements } /** - * @see MediaPlayer#setDataSource(Context, Uri) + * Sets the media source of the player witha given URI. + * @see MediaPlayer#setDataSource(String) + * @return Returns true if uri represents a new media; false + * otherwise. */ - public void setMediaSource(Uri uri) { + public boolean setMediaSource(Uri uri) { if (mMediaSourceUri != null && mMediaSourceUri.equals(uri)) { - return; + return false; } mMediaSourceUri = uri; + return true; + } + + /** + * Sets the media source of the player with a String path URL. + * @see MediaPlayer#setDataSource(String) + * @return Returns true if path represents a new media; false + * otherwise. + */ + public boolean setMediaSource(String path) { + if (mMediaSourcePath != null && mMediaSourcePath.equals(mMediaSourcePath)) { + return false; + } + mMediaSourcePath = path; + return true; + } + + public void prepareMediaForPlaying() { reset(); try { if (mMediaSourceUri != null) mPlayer.setDataSource(getContext(), mMediaSourceUri); @@ -323,13 +346,6 @@ public abstract class MediaPlayerGlue extends PlaybackControlGlue implements onStateChanged(); } - /** - * @see MediaPlayer#setDataSource(String) - */ - public void setMediaSource(String path) { - mMediaSourcePath = path; - } - /** * Call to startPlayback(1). * diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/MusicConsumptionExampleFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/MusicConsumptionExampleFragment.java index 885ebd778..0650cfc64 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/MusicConsumptionExampleFragment.java +++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/MusicConsumptionExampleFragment.java @@ -105,6 +105,7 @@ public class MusicConsumptionExampleFragment extends PlaybackOverlayFragment imp Uri uri = Utils.getResourceUri(getActivity(), song.getFileResource(getActivity())); mGlue.setMetaData(metaData); mGlue.setMediaSource(uri); + mGlue.prepareMediaForPlaying(); addPlaybackControlsRow(); } @@ -149,11 +150,12 @@ public class MusicConsumptionExampleFragment extends PlaybackOverlayFragment imp vh.getMediaItemNameView().setTextColor(favoriteTextColor); vh.getMediaItemDurationView().setTextColor(favoriteTextColor); } else { - vh.getMediaItemNumberView().setTextAppearance( + Context context = vh.getMediaItemNumberView().getContext(); + vh.getMediaItemNumberView().setTextAppearance(context, R.style.TextAppearance_Leanback_PlaybackMediaItemNumber); - vh.getMediaItemNameView().setTextAppearance( + vh.getMediaItemNameView().setTextAppearance(context, R.style.TextAppearance_Leanback_PlaybackMediaItemName); - vh.getMediaItemDurationView().setTextAppearance( + vh.getMediaItemDurationView().setTextAppearance(context, R.style.TextAppearance_Leanback_PlaybackMediaItemDuration); } } @@ -302,7 +304,10 @@ public class MusicConsumptionExampleFragment extends PlaybackOverlayFragment imp Uri uri = Utils.getResourceUri(getActivity(), song.getFileResource(getActivity())); mGlue.setMetaData(metaData); - mGlue.setMediaSource(uri); + + if (mGlue.setMediaSource(uri)) { + mGlue.prepareMediaForPlaying(); + } mGlue.startPlayback(); } } diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/VideoConsumptionExampleFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/VideoConsumptionExampleFragment.java index dec391313..ca33b4268 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/VideoConsumptionExampleFragment.java +++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/media/VideoConsumptionExampleFragment.java @@ -55,6 +55,7 @@ public class VideoConsumptionExampleFragment extends PlaybackOverlayFragment imp metaData.setTitle("Diving with Sharks"); mGlue.setMetaData(metaData); mGlue.setMediaSource(URL); + mGlue.prepareMediaForPlaying(); Fragment videoSurfaceFragment = getFragmentManager() diff --git a/samples/SupportLeanbackShowcase/app/src/main/res/xml/prefs.xml b/samples/SupportLeanbackShowcase/app/src/main/res/xml/prefs.xml index e69c4e2d5..f0edd0eb1 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/res/xml/prefs.xml +++ b/samples/SupportLeanbackShowcase/app/src/main/res/xml/prefs.xml @@ -87,9 +87,9 @@ - + From 13ceed33b407a05975594cbc0195a564296d18d0 Mon Sep 17 00:00:00 2001 From: Keyvan Amiri Date: Thu, 12 May 2016 15:42:54 -0700 Subject: [PATCH 2/2] Showcase app: added a video playing at the end of GuidedStepFragment workflow Now, after the user clicks on 'Watch Now', the sample video from the "Video Consumption Examples" fragment will start playing, and on back-press, they will be forwarded back to the Showcase app home screen. Change-Id: Ife2ffbed1ed00a52df0a9cff4ab41a5868adee3d --- .../app/wizard/WizardExample4thStepFragment.java | 14 +++++++++++--- .../app/src/main/res/values/colors.xml | 2 +- .../app/src/main/res/values/strings.xml | 1 + 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java index ec2980984..b0cb9aa91 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java +++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java @@ -14,11 +14,14 @@ package android.support.v17.leanback.supportleanbackshowcase.app.wizard; +import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v17.leanback.supportleanbackshowcase.R; +import android.support.v17.leanback.supportleanbackshowcase.app.media.VideoExampleActivity; import android.support.v17.leanback.widget.GuidanceStylist; import android.support.v17.leanback.widget.GuidedAction; +import android.support.v4.app.ActivityOptionsCompat; import android.widget.Toast; import java.util.List; @@ -60,10 +63,15 @@ public class WizardExample4thStepFragment extends WizardExampleBaseStepFragment @Override public void onGuidedActionClicked(GuidedAction action) { - if (ACTION_ID_WATCH == action.getId()) { - Toast.makeText(getActivity(), getString(R.string.wizard_example_watch_now_clicked), + if (action.getId() == ACTION_ID_WATCH) { + finishGuidedStepFragments(); + Intent intent = new Intent(getActivity().getBaseContext(), + VideoExampleActivity.class); + startActivity(intent); + } else if (action.getId() == ACTION_ID_LATER) { + Toast.makeText(getActivity(), getString(R.string.wizard_example_later_clicked), Toast.LENGTH_SHORT).show(); + finishGuidedStepFragments(); } - getActivity().finish(); } } diff --git a/samples/SupportLeanbackShowcase/app/src/main/res/values/colors.xml b/samples/SupportLeanbackShowcase/app/src/main/res/values/colors.xml index 10d0973a1..8526c76a4 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/res/values/colors.xml +++ b/samples/SupportLeanbackShowcase/app/src/main/res/values/colors.xml @@ -45,7 +45,7 @@ #FF6E40 #C03800 - #C03800 + #732200 #263238 #0277BD #01579B diff --git a/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml b/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml index 33981d68d..0921d66fc 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml +++ b/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml @@ -56,6 +56,7 @@ Watch now Later \'Watch now\' clicked. + \'Later\' clicked. New credit card Enter new credit card information here Input Payment Type