Loading api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -26035,6 +26035,7 @@ package android.media { public static final class MediaSession2.Builder { ctor public MediaSession2.Builder(@NonNull android.content.Context); method @NonNull public android.media.MediaSession2 build(); method @NonNull public android.media.MediaSession2.Builder setExtras(@Nullable android.os.Bundle); method @NonNull public android.media.MediaSession2.Builder setId(@NonNull String); method @NonNull public android.media.MediaSession2.Builder setSessionActivity(@Nullable android.app.PendingIntent); method @NonNull public android.media.MediaSession2.Builder setSessionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaSession2.SessionCallback); Loading Loading @@ -26397,6 +26398,7 @@ package android.media { public final class Session2Token implements android.os.Parcelable { ctor public Session2Token(@NonNull android.content.Context, @NonNull android.content.ComponentName); method public int describeContents(); method @Nullable public android.os.Bundle getExtras(); method @NonNull public String getPackageName(); method @Nullable public String getServiceName(); method public int getType(); media/apex/java/android/media/MediaConstants.java +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ class MediaConstants { static final String KEY_SESSION2LINK = "android.media.key.SESSION2LINK"; static final String KEY_ALLOWED_COMMANDS = "android.media.key.ALLOWED_COMMANDS"; static final String KEY_PLAYBACK_ACTIVE = "android.media.key.PLAYBACK_ACTIVE"; static final String KEY_TOKEN_EXTRAS = "android.media.key.TOKEN_EXTRAS"; private MediaConstants() { } Loading media/apex/java/android/media/MediaController2.java +3 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.media.MediaConstants.KEY_PACKAGE_NAME; import static android.media.MediaConstants.KEY_PID; import static android.media.MediaConstants.KEY_PLAYBACK_ACTIVE; import static android.media.MediaConstants.KEY_SESSION2LINK; import static android.media.MediaConstants.KEY_TOKEN_EXTRAS; import static android.media.Session2Command.RESULT_ERROR_UNKNOWN_ERROR; import static android.media.Session2Command.RESULT_INFO_SKIPPED; import static android.media.Session2Token.TYPE_SESSION; Loading Loading @@ -264,6 +265,7 @@ public class MediaController2 implements AutoCloseable { Session2CommandGroup allowedCommands = connectionResult.getParcelable(KEY_ALLOWED_COMMANDS); boolean playbackActive = connectionResult.getBoolean(KEY_PLAYBACK_ACTIVE); Bundle tokenExtras = connectionResult.getBundle(KEY_TOKEN_EXTRAS); if (DEBUG) { Log.d(TAG, "notifyConnected sessionBinder=" + sessionBinder + ", allowedCommands=" + allowedCommands); Loading @@ -282,7 +284,7 @@ public class MediaController2 implements AutoCloseable { // so can be used without worrying about deadlock. sessionBinder.linkToDeath(mDeathRecipient, 0); mConnectedToken = new Session2Token(mSessionToken.getUid(), TYPE_SESSION, mSessionToken.getPackageName(), sessionBinder); mSessionToken.getPackageName(), sessionBinder, tokenExtras); } mCallbackExecutor.execute(() -> { mCallback.onConnected(MediaController2.this, allowedCommands); Loading media/apex/java/android/media/MediaSession2.java +19 −3 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.media.MediaConstants.KEY_PACKAGE_NAME; import static android.media.MediaConstants.KEY_PID; import static android.media.MediaConstants.KEY_PLAYBACK_ACTIVE; import static android.media.MediaConstants.KEY_SESSION2LINK; import static android.media.MediaConstants.KEY_TOKEN_EXTRAS; import static android.media.Session2Command.RESULT_ERROR_UNKNOWN_ERROR; import static android.media.Session2Command.RESULT_INFO_SKIPPED; import static android.media.Session2Token.TYPE_SESSION; Loading Loading @@ -94,7 +95,8 @@ public class MediaSession2 implements AutoCloseable { private ForegroundServiceEventCallback mForegroundServiceEventCallback; MediaSession2(@NonNull Context context, @NonNull String id, PendingIntent sessionActivity, @NonNull Executor callbackExecutor, @NonNull SessionCallback callback) { @NonNull Executor callbackExecutor, @NonNull SessionCallback callback, Bundle tokenExtras) { synchronized (MediaSession2.class) { if (SESSION_ID_LIST.contains(id)) { throw new IllegalStateException("Session ID must be unique. ID=" + id); Loading @@ -109,7 +111,7 @@ public class MediaSession2 implements AutoCloseable { mCallback = callback; mSessionStub = new Session2Link(this); mSessionToken = new Session2Token(Process.myUid(), TYPE_SESSION, context.getPackageName(), mSessionStub); mSessionStub, tokenExtras); mSessionManager = (MediaSessionManager) mContext.getSystemService( Context.MEDIA_SESSION_SERVICE); // NOTE: mResultHandler uses main looper, so this MUST NOT be blocked. Loading Loading @@ -339,6 +341,7 @@ public class MediaSession2 implements AutoCloseable { connectionResult.putParcelable(KEY_ALLOWED_COMMANDS, controllerInfo.mAllowedCommands); connectionResult.putBoolean(KEY_PLAYBACK_ACTIVE, isPlaybackActive()); connectionResult.putBundle(KEY_TOKEN_EXTRAS, mSessionToken.getExtras()); // Double check if session is still there, because close() can be called in // another thread. Loading Loading @@ -444,6 +447,7 @@ public class MediaSession2 implements AutoCloseable { private PendingIntent mSessionActivity; private Executor mCallbackExecutor; private SessionCallback mCallback; private Bundle mExtras; /** * Creates a builder for {@link MediaSession2}. Loading Loading @@ -506,6 +510,18 @@ public class MediaSession2 implements AutoCloseable { return this; } /** * Set extras for the session token. * * @return The Builder to allow chaining * @see Session2Token#getExtras() */ @NonNull public Builder setExtras(@Nullable Bundle extras) { mExtras = extras; return this; } /** * Build {@link MediaSession2}. * Loading @@ -525,7 +541,7 @@ public class MediaSession2 implements AutoCloseable { mId = ""; } MediaSession2 session2 = new MediaSession2(mContext, mId, mSessionActivity, mCallbackExecutor, mCallback); mCallbackExecutor, mCallback, mExtras); // Notify framework about the newly create session after the constructor is finished. // Otherwise, framework may access the session before the initialization is finished. Loading media/apex/java/android/media/Session2Token.java +16 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; Loading Loading @@ -88,6 +89,7 @@ public final class Session2Token implements Parcelable { private final String mServiceName; private final Session2Link mSessionLink; private final ComponentName mComponentName; private final Bundle mExtras; /** * Constructor for the token with type {@link #TYPE_SESSION_SERVICE}. Loading Loading @@ -116,15 +118,18 @@ public final class Session2Token implements Parcelable { mUid = uid; mType = TYPE_SESSION_SERVICE; mSessionLink = null; mExtras = null; } Session2Token(int uid, int type, String packageName, Session2Link sessionLink) { Session2Token(int uid, int type, String packageName, Session2Link sessionLink, Bundle tokenExtras) { mUid = uid; mType = type; mPackageName = packageName; mServiceName = null; mComponentName = null; mSessionLink = sessionLink; mExtras = tokenExtras; } Session2Token(Parcel in) { Loading @@ -134,6 +139,7 @@ public final class Session2Token implements Parcelable { mServiceName = in.readString(); mSessionLink = in.readParcelable(null); mComponentName = ComponentName.unflattenFromString(in.readString()); mExtras = in.readBundle(); } @Override Loading @@ -144,6 +150,7 @@ public final class Session2Token implements Parcelable { dest.writeString(mServiceName); dest.writeParcelable(mSessionLink, flags); dest.writeString(mComponentName == null ? "" : mComponentName.flattenToString()); dest.writeBundle(mExtras); } @Override Loading Loading @@ -207,6 +214,14 @@ public final class Session2Token implements Parcelable { return mType; } /** * @return extras of the token */ @Nullable public Bundle getExtras() { return mExtras; } Session2Link getSessionLink() { return mSessionLink; } Loading Loading
api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -26035,6 +26035,7 @@ package android.media { public static final class MediaSession2.Builder { ctor public MediaSession2.Builder(@NonNull android.content.Context); method @NonNull public android.media.MediaSession2 build(); method @NonNull public android.media.MediaSession2.Builder setExtras(@Nullable android.os.Bundle); method @NonNull public android.media.MediaSession2.Builder setId(@NonNull String); method @NonNull public android.media.MediaSession2.Builder setSessionActivity(@Nullable android.app.PendingIntent); method @NonNull public android.media.MediaSession2.Builder setSessionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaSession2.SessionCallback); Loading Loading @@ -26397,6 +26398,7 @@ package android.media { public final class Session2Token implements android.os.Parcelable { ctor public Session2Token(@NonNull android.content.Context, @NonNull android.content.ComponentName); method public int describeContents(); method @Nullable public android.os.Bundle getExtras(); method @NonNull public String getPackageName(); method @Nullable public String getServiceName(); method public int getType();
media/apex/java/android/media/MediaConstants.java +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ class MediaConstants { static final String KEY_SESSION2LINK = "android.media.key.SESSION2LINK"; static final String KEY_ALLOWED_COMMANDS = "android.media.key.ALLOWED_COMMANDS"; static final String KEY_PLAYBACK_ACTIVE = "android.media.key.PLAYBACK_ACTIVE"; static final String KEY_TOKEN_EXTRAS = "android.media.key.TOKEN_EXTRAS"; private MediaConstants() { } Loading
media/apex/java/android/media/MediaController2.java +3 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.media.MediaConstants.KEY_PACKAGE_NAME; import static android.media.MediaConstants.KEY_PID; import static android.media.MediaConstants.KEY_PLAYBACK_ACTIVE; import static android.media.MediaConstants.KEY_SESSION2LINK; import static android.media.MediaConstants.KEY_TOKEN_EXTRAS; import static android.media.Session2Command.RESULT_ERROR_UNKNOWN_ERROR; import static android.media.Session2Command.RESULT_INFO_SKIPPED; import static android.media.Session2Token.TYPE_SESSION; Loading Loading @@ -264,6 +265,7 @@ public class MediaController2 implements AutoCloseable { Session2CommandGroup allowedCommands = connectionResult.getParcelable(KEY_ALLOWED_COMMANDS); boolean playbackActive = connectionResult.getBoolean(KEY_PLAYBACK_ACTIVE); Bundle tokenExtras = connectionResult.getBundle(KEY_TOKEN_EXTRAS); if (DEBUG) { Log.d(TAG, "notifyConnected sessionBinder=" + sessionBinder + ", allowedCommands=" + allowedCommands); Loading @@ -282,7 +284,7 @@ public class MediaController2 implements AutoCloseable { // so can be used without worrying about deadlock. sessionBinder.linkToDeath(mDeathRecipient, 0); mConnectedToken = new Session2Token(mSessionToken.getUid(), TYPE_SESSION, mSessionToken.getPackageName(), sessionBinder); mSessionToken.getPackageName(), sessionBinder, tokenExtras); } mCallbackExecutor.execute(() -> { mCallback.onConnected(MediaController2.this, allowedCommands); Loading
media/apex/java/android/media/MediaSession2.java +19 −3 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.media.MediaConstants.KEY_PACKAGE_NAME; import static android.media.MediaConstants.KEY_PID; import static android.media.MediaConstants.KEY_PLAYBACK_ACTIVE; import static android.media.MediaConstants.KEY_SESSION2LINK; import static android.media.MediaConstants.KEY_TOKEN_EXTRAS; import static android.media.Session2Command.RESULT_ERROR_UNKNOWN_ERROR; import static android.media.Session2Command.RESULT_INFO_SKIPPED; import static android.media.Session2Token.TYPE_SESSION; Loading Loading @@ -94,7 +95,8 @@ public class MediaSession2 implements AutoCloseable { private ForegroundServiceEventCallback mForegroundServiceEventCallback; MediaSession2(@NonNull Context context, @NonNull String id, PendingIntent sessionActivity, @NonNull Executor callbackExecutor, @NonNull SessionCallback callback) { @NonNull Executor callbackExecutor, @NonNull SessionCallback callback, Bundle tokenExtras) { synchronized (MediaSession2.class) { if (SESSION_ID_LIST.contains(id)) { throw new IllegalStateException("Session ID must be unique. ID=" + id); Loading @@ -109,7 +111,7 @@ public class MediaSession2 implements AutoCloseable { mCallback = callback; mSessionStub = new Session2Link(this); mSessionToken = new Session2Token(Process.myUid(), TYPE_SESSION, context.getPackageName(), mSessionStub); mSessionStub, tokenExtras); mSessionManager = (MediaSessionManager) mContext.getSystemService( Context.MEDIA_SESSION_SERVICE); // NOTE: mResultHandler uses main looper, so this MUST NOT be blocked. Loading Loading @@ -339,6 +341,7 @@ public class MediaSession2 implements AutoCloseable { connectionResult.putParcelable(KEY_ALLOWED_COMMANDS, controllerInfo.mAllowedCommands); connectionResult.putBoolean(KEY_PLAYBACK_ACTIVE, isPlaybackActive()); connectionResult.putBundle(KEY_TOKEN_EXTRAS, mSessionToken.getExtras()); // Double check if session is still there, because close() can be called in // another thread. Loading Loading @@ -444,6 +447,7 @@ public class MediaSession2 implements AutoCloseable { private PendingIntent mSessionActivity; private Executor mCallbackExecutor; private SessionCallback mCallback; private Bundle mExtras; /** * Creates a builder for {@link MediaSession2}. Loading Loading @@ -506,6 +510,18 @@ public class MediaSession2 implements AutoCloseable { return this; } /** * Set extras for the session token. * * @return The Builder to allow chaining * @see Session2Token#getExtras() */ @NonNull public Builder setExtras(@Nullable Bundle extras) { mExtras = extras; return this; } /** * Build {@link MediaSession2}. * Loading @@ -525,7 +541,7 @@ public class MediaSession2 implements AutoCloseable { mId = ""; } MediaSession2 session2 = new MediaSession2(mContext, mId, mSessionActivity, mCallbackExecutor, mCallback); mCallbackExecutor, mCallback, mExtras); // Notify framework about the newly create session after the constructor is finished. // Otherwise, framework may access the session before the initialization is finished. Loading
media/apex/java/android/media/Session2Token.java +16 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; Loading Loading @@ -88,6 +89,7 @@ public final class Session2Token implements Parcelable { private final String mServiceName; private final Session2Link mSessionLink; private final ComponentName mComponentName; private final Bundle mExtras; /** * Constructor for the token with type {@link #TYPE_SESSION_SERVICE}. Loading Loading @@ -116,15 +118,18 @@ public final class Session2Token implements Parcelable { mUid = uid; mType = TYPE_SESSION_SERVICE; mSessionLink = null; mExtras = null; } Session2Token(int uid, int type, String packageName, Session2Link sessionLink) { Session2Token(int uid, int type, String packageName, Session2Link sessionLink, Bundle tokenExtras) { mUid = uid; mType = type; mPackageName = packageName; mServiceName = null; mComponentName = null; mSessionLink = sessionLink; mExtras = tokenExtras; } Session2Token(Parcel in) { Loading @@ -134,6 +139,7 @@ public final class Session2Token implements Parcelable { mServiceName = in.readString(); mSessionLink = in.readParcelable(null); mComponentName = ComponentName.unflattenFromString(in.readString()); mExtras = in.readBundle(); } @Override Loading @@ -144,6 +150,7 @@ public final class Session2Token implements Parcelable { dest.writeString(mServiceName); dest.writeParcelable(mSessionLink, flags); dest.writeString(mComponentName == null ? "" : mComponentName.flattenToString()); dest.writeBundle(mExtras); } @Override Loading Loading @@ -207,6 +214,14 @@ public final class Session2Token implements Parcelable { return mType; } /** * @return extras of the token */ @Nullable public Bundle getExtras() { return mExtras; } Session2Link getSessionLink() { return mSessionLink; } Loading