From 566c1ed18f429a7a64aeac01baa0af150fcd1eb4 Mon Sep 17 00:00:00 2001 From: RoboErik Date: Tue, 4 Nov 2014 13:00:22 -0800 Subject: [PATCH 1/2] Add setRatingType to MediaSession This was missing in L. Needed to tell controllers how to rate content. bug:18051829 Change-Id: I26e662ff04f77ed7f2922bf9e74acf74c850547b --- api/current.txt | 1 + .../android/media/session/MediaSession.java | 21 +++++++++++++++++++ .../android/media/session/PlaybackState.java | 1 + 3 files changed, 23 insertions(+) diff --git a/api/current.txt b/api/current.txt index 6851bbf36df60..41626113c6330 100644 --- a/api/current.txt +++ b/api/current.txt @@ -16304,6 +16304,7 @@ package android.media.session { method public void setPlaybackToRemote(android.media.VolumeProvider); method public void setQueue(java.util.List); method public void setQueueTitle(java.lang.CharSequence); + method public void setRatingType(int); method public void setSessionActivity(android.app.PendingIntent); field public static final int FLAG_HANDLES_MEDIA_BUTTONS = 1; // 0x1 field public static final int FLAG_HANDLES_TRANSPORT_CONTROLS = 2; // 0x2 diff --git a/media/java/android/media/session/MediaSession.java b/media/java/android/media/session/MediaSession.java index 86da80a7eac86..ee296d02f4309 100644 --- a/media/java/android/media/session/MediaSession.java +++ b/media/java/android/media/session/MediaSession.java @@ -448,6 +448,27 @@ public final class MediaSession { } } + /** + * Set the style of rating used by this session. Apps trying to set the + * rating should use this style. Must be one of the following: + * + */ + public void setRatingType(int type) { + try { + mBinder.setRatingType(type); + } catch (RemoteException e) { + Log.e(TAG, "Error in setRatingType.", e); + } + } + /** * Set some extras that can be associated with the {@link MediaSession}. No assumptions should * be made as to how a {@link MediaController} will handle these extras. diff --git a/media/java/android/media/session/PlaybackState.java b/media/java/android/media/session/PlaybackState.java index 267d1ff9457b1..2e9e0fbeeaf16 100644 --- a/media/java/android/media/session/PlaybackState.java +++ b/media/java/android/media/session/PlaybackState.java @@ -306,6 +306,7 @@ public final class PlaybackState implements Parcelable { *
  • {@link PlaybackState#STATE_REWINDING}
  • *
  • {@link PlaybackState#STATE_BUFFERING}
  • *
  • {@link PlaybackState#STATE_ERROR}
  • + * */ public int getState() { return mState; From 131e63adaa3333ef44dbe090471b710816447bf6 Mon Sep 17 00:00:00 2001 From: RoboErik Date: Tue, 4 Nov 2014 13:47:45 -0800 Subject: [PATCH 2/2] Add extras to the PlaybackState This allows apps to include extras that are atomic with play state changes. bug:18189125 bug:18103891 Change-Id: Ia3bc5b0dcf29960cb70e2ff3a67ec1fdd48b7a5a --- api/current.txt | 2 ++ .../android/media/session/PlaybackState.java | 35 ++++++++++++++++--- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/api/current.txt b/api/current.txt index 41626113c6330..31cb06c8e0329 100644 --- a/api/current.txt +++ b/api/current.txt @@ -16363,6 +16363,7 @@ package android.media.session { method public long getBufferedPosition(); method public java.util.List getCustomActions(); method public java.lang.CharSequence getErrorMessage(); + method public android.os.Bundle getExtras(); method public long getLastPositionUpdateTime(); method public float getPlaybackSpeed(); method public long getPosition(); @@ -16407,6 +16408,7 @@ package android.media.session { method public android.media.session.PlaybackState.Builder setActiveQueueItemId(long); method public android.media.session.PlaybackState.Builder setBufferedPosition(long); method public android.media.session.PlaybackState.Builder setErrorMessage(java.lang.CharSequence); + method public android.media.session.PlaybackState.Builder setExtras(android.os.Bundle); method public android.media.session.PlaybackState.Builder setState(int, long, float, long); method public android.media.session.PlaybackState.Builder setState(int, long, float); } diff --git a/media/java/android/media/session/PlaybackState.java b/media/java/android/media/session/PlaybackState.java index 2e9e0fbeeaf16..54d0acdbaa8be 100644 --- a/media/java/android/media/session/PlaybackState.java +++ b/media/java/android/media/session/PlaybackState.java @@ -16,6 +16,7 @@ package android.media.session; import android.annotation.DrawableRes; +import android.annotation.Nullable; import android.media.RemoteControlClient; import android.os.Bundle; import android.os.Parcel; @@ -232,11 +233,12 @@ public final class PlaybackState implements Parcelable { private final CharSequence mErrorMessage; private final long mUpdateTime; private final long mActiveItemId; + private final Bundle mExtras; private PlaybackState(int state, long position, long updateTime, float speed, long bufferedPosition, long transportControls, List customActions, long activeItemId, - CharSequence error) { + CharSequence error, Bundle extras) { mState = state; mPosition = position; mSpeed = speed; @@ -246,6 +248,7 @@ public final class PlaybackState implements Parcelable { mCustomActions = new ArrayList<>(customActions); mActiveItemId = activeItemId; mErrorMessage = error; + mExtras = extras; } private PlaybackState(Parcel in) { @@ -258,7 +261,7 @@ public final class PlaybackState implements Parcelable { mCustomActions = in.createTypedArrayList(CustomAction.CREATOR); mActiveItemId = in.readLong(); mErrorMessage = in.readCharSequence(); - + mExtras = in.readBundle(); } @Override @@ -293,6 +296,7 @@ public final class PlaybackState implements Parcelable { dest.writeTypedList(mCustomActions); dest.writeLong(mActiveItemId); dest.writeCharSequence(mErrorMessage); + dest.writeBundle(mExtras); } /** @@ -394,6 +398,15 @@ public final class PlaybackState implements Parcelable { return mActiveItemId; } + /** + * Get any custom extras that were set on this playback state. + * + * @return The extras for this state or null. + */ + public @Nullable Bundle getExtras() { + return mExtras; + } + /** * Get the {@link PlaybackState} state for the given * {@link RemoteControlClient} state. @@ -738,6 +751,7 @@ public final class PlaybackState implements Parcelable { private CharSequence mErrorMessage; private long mUpdateTime; private long mActiveItemId = MediaSession.QueueItem.UNKNOWN_ID; + private Bundle mExtras; /** * Creates an initially empty state builder. @@ -766,6 +780,7 @@ public final class PlaybackState implements Parcelable { mErrorMessage = from.mErrorMessage; mUpdateTime = from.mUpdateTime; mActiveItemId = from.mActiveItemId; + mExtras = from.mExtras; } /** @@ -948,13 +963,25 @@ public final class PlaybackState implements Parcelable { } /** - * Build and return the {@link PlaybackState} instance with these values. + * Set any custom extras to be included with the playback state. + * + * @param extras The extras to include. + * @return this + */ + public Builder setExtras(Bundle extras) { + mExtras = extras; + return this; + } + + /** + * Build and return the {@link PlaybackState} instance with these + * values. * * @return A new state instance. */ public PlaybackState build() { return new PlaybackState(mState, mPosition, mUpdateTime, mSpeed, mBufferedPosition, - mActions, mCustomActions, mActiveItemId, mErrorMessage); + mActions, mCustomActions, mActiveItemId, mErrorMessage, mExtras); } } }