Make MediaSessionToken an inner class of MediaSession.
Also add some missing AIDLs to the framework makefile to ensure
they are included in the SDK.
Change-Id: If85a3091c7591e0b3bbe6cc4bb74aba2284b4f42
diff --git a/Android.mk b/Android.mk
index a38e9e7..a6271d2 100644
--- a/Android.mk
+++ b/Android.mk
@@ -509,6 +509,10 @@
frameworks/base/location/java/android/location/FusedBatchOptions.aidl \
frameworks/base/location/java/com/android/internal/location/ProviderProperties.aidl \
frameworks/base/location/java/com/android/internal/location/ProviderRequest.aidl \
+ frameworks/base/media/java/android/media/MediaMetadata.aidl \
+ frameworks/base/media/java/android/media/Rating.aidl \
+ frameworks/base/media/java/android/media/session/MediaSession.aidl \
+ frameworks/base/media/java/android/media/session/PlaybackState.aidl \
frameworks/base/telephony/java/android/telephony/ServiceState.aidl \
frameworks/base/telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl \
frameworks/base/telephony/java/com/android/internal/telephony/ITelephony.aidl \
diff --git a/api/current.txt b/api/current.txt
index c962c0a..29dcc72 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -4699,7 +4699,7 @@
ctor public Notification.MediaStyle();
ctor public Notification.MediaStyle(android.app.Notification.Builder);
method public android.app.Notification buildStyled(android.app.Notification);
- method public android.app.Notification.MediaStyle setMediaSession(android.media.session.MediaSessionToken);
+ method public android.app.Notification.MediaStyle setMediaSession(android.media.session.MediaSession.Token);
method public android.app.Notification.MediaStyle setShowActionsInCompactView(int...);
}
@@ -15774,7 +15774,7 @@
method public void addCallback(android.media.session.MediaController.Callback, android.os.Handler);
method public void adjustVolumeBy(int, int);
method public boolean dispatchMediaButtonEvent(android.view.KeyEvent);
- method public static android.media.session.MediaController fromToken(android.media.session.MediaSessionToken);
+ method public static android.media.session.MediaController fromToken(android.media.session.MediaSession.Token);
method public android.media.MediaMetadata getMetadata();
method public android.media.session.PlaybackState getPlaybackState();
method public int getRatingType();
@@ -15818,7 +15818,7 @@
method public void addCallback(android.media.session.MediaSession.Callback, android.os.Handler);
method public void addTransportControlsCallback(android.media.session.MediaSession.TransportControlsCallback);
method public void addTransportControlsCallback(android.media.session.MediaSession.TransportControlsCallback, android.os.Handler);
- method public android.media.session.MediaSessionToken getSessionToken();
+ method public android.media.session.MediaSession.Token getSessionToken();
method public boolean isActive();
method public void release();
method public void removeCallback(android.media.session.MediaSession.Callback);
@@ -15843,6 +15843,12 @@
method public void onMediaButtonEvent(android.content.Intent);
}
+ public static final class MediaSession.Token implements android.os.Parcelable {
+ method public int describeContents();
+ method public void writeToParcel(android.os.Parcel, int);
+ field public static final android.os.Parcelable.Creator CREATOR;
+ }
+
public static abstract class MediaSession.TransportControlsCallback {
ctor public MediaSession.TransportControlsCallback();
method public void onFastForward();
@@ -15867,12 +15873,6 @@
method public abstract void onActiveSessionsChanged(java.util.List<android.media.session.MediaController>);
}
- public final class MediaSessionToken implements android.os.Parcelable {
- method public int describeContents();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator CREATOR;
- }
-
public final class PlaybackState implements android.os.Parcelable {
ctor public PlaybackState();
ctor public PlaybackState(android.media.session.PlaybackState);
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 84f7e5f..c5eb356 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -27,7 +27,7 @@
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.media.AudioManager;
-import android.media.session.MediaSessionToken;
+import android.media.session.MediaSession;
import android.net.Uri;
import android.os.BadParcelableException;
import android.os.Bundle;
@@ -777,7 +777,7 @@
/**
* {@link #extras} key: A
- * {@link android.media.session.MediaSessionToken} associated with a
+ * {@link android.media.session.MediaSession.Token} associated with a
* {@link android.app.Notification.MediaStyle} notification.
*/
public static final String EXTRA_MEDIA_SESSION = "android.mediaSession";
@@ -3230,8 +3230,8 @@
* {@link #setShowActionsInCompactView(int...)} you can promote up to 2 actions to be displayed
* in the standard view alongside the usual content.
*
- * Finally, if you attach a {@link android.media.session.MediaSessionToken} using
- * {@link android.app.Notification.MediaStyle#setMediaSession(MediaSessionToken)},
+ * Finally, if you attach a {@link android.media.session.MediaSession.Token} using
+ * {@link android.app.Notification.MediaStyle#setMediaSession(MediaSession.Token)},
* the System UI can identify this as a notification representing an active media session
* and respond accordingly (by showing album artwork in the lockscreen, for example).
*
@@ -3255,7 +3255,7 @@
static final int MAX_MEDIA_BUTTONS = 5;
private int[] mActionsToShowInCompact = null;
- private MediaSessionToken mToken;
+ private MediaSession.Token mToken;
public MediaStyle() {
}
@@ -3274,10 +3274,10 @@
}
/**
- * Attach a {@link android.media.session.MediaSessionToken} to this Notification to provide
- * additional playback information and control to the SystemUI.
+ * Attach a {@link android.media.session.MediaSession.Token} to this Notification
+ * to provide additional playback information and control to the SystemUI.
*/
- public MediaStyle setMediaSession(MediaSessionToken token) {
+ public MediaStyle setMediaSession(MediaSession.Token token) {
mToken = token;
return this;
}
diff --git a/media/java/android/media/session/IActiveSessionsListener.aidl b/media/java/android/media/session/IActiveSessionsListener.aidl
index e5e24bc..4b9e4bd 100644
--- a/media/java/android/media/session/IActiveSessionsListener.aidl
+++ b/media/java/android/media/session/IActiveSessionsListener.aidl
@@ -15,12 +15,12 @@
package android.media.session;
-import android.media.session.MediaSessionToken;
+import android.media.session.MediaSession;
/**
* Listens for changes to the list of active sessions.
* @hide
*/
oneway interface IActiveSessionsListener {
- void onActiveSessionsChanged(in List<MediaSessionToken> sessions);
-}
\ No newline at end of file
+ void onActiveSessionsChanged(in List<MediaSession.Token> sessions);
+}
diff --git a/media/java/android/media/session/MediaController.java b/media/java/android/media/session/MediaController.java
index 7653e5a..edb69bc 100644
--- a/media/java/android/media/session/MediaController.java
+++ b/media/java/android/media/session/MediaController.java
@@ -42,7 +42,7 @@
* <p>
* A MediaController can be created through {@link MediaSessionManager} if you
* hold the "android.permission.MEDIA_CONTENT_CONTROL" permission or directly if
- * you have a {@link MediaSessionToken} from the session owner.
+ * you have a {@link MediaSession.Token} from the session owner.
* <p>
* MediaController objects are thread-safe.
*/
@@ -86,7 +86,7 @@
* @param token The session token to control.
* @return A controller for the session or null if inaccessible.
*/
- public static MediaController fromToken(@NonNull MediaSessionToken token) {
+ public static MediaController fromToken(@NonNull MediaSession.Token token) {
return fromBinder(token.getBinder());
}
diff --git a/media/java/android/media/session/MediaSessionToken.aidl b/media/java/android/media/session/MediaSession.aidl
similarity index 95%
rename from media/java/android/media/session/MediaSessionToken.aidl
rename to media/java/android/media/session/MediaSession.aidl
index 5812682..4a7efc2 100644
--- a/media/java/android/media/session/MediaSessionToken.aidl
+++ b/media/java/android/media/session/MediaSession.aidl
@@ -15,4 +15,4 @@
package android.media.session;
-parcelable MediaSessionToken;
+parcelable MediaSession.Token;
diff --git a/media/java/android/media/session/MediaSession.java b/media/java/android/media/session/MediaSession.java
index 7637ec8..dbe13dd 100644
--- a/media/java/android/media/session/MediaSession.java
+++ b/media/java/android/media/session/MediaSession.java
@@ -32,6 +32,8 @@
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.os.Parcel;
+import android.os.Parcelable;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.text.TextUtils;
@@ -136,7 +138,7 @@
private final Object mLock = new Object();
- private final MediaSessionToken mSessionToken;
+ private final MediaSession.Token mSessionToken;
private final ISession mBinder;
private final CallbackStub mCbStub;
@@ -165,7 +167,7 @@
} catch (RemoteException e) {
throw new RuntimeException("Dead object in MediaSessionController constructor: ", e);
}
- mSessionToken = new MediaSessionToken(controllerBinder);
+ mSessionToken = new Token(controllerBinder);
}
/**
@@ -370,7 +372,7 @@
* @return A token that can be used to create a MediaController for this
* session
*/
- public @NonNull MediaSessionToken getSessionToken() {
+ public @NonNull Token getSessionToken() {
return mSessionToken;
}
@@ -697,6 +699,49 @@
}
/**
+ * Represents an ongoing session. This may be passed to apps by the session
+ * owner to allow them to create a {@link MediaController} to communicate with
+ * the session.
+ */
+ public static final class Token implements Parcelable {
+ private ISessionController mBinder;
+
+ /**
+ * @hide
+ */
+ public Token(ISessionController binder) {
+ mBinder = binder;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeStrongBinder(mBinder.asBinder());
+ }
+
+ ISessionController getBinder() {
+ return mBinder;
+ }
+
+ public static final Parcelable.Creator<Token> CREATOR
+ = new Parcelable.Creator<Token>() {
+ @Override
+ public Token createFromParcel(Parcel in) {
+ return new Token(ISessionController.Stub.asInterface(in.readStrongBinder()));
+ }
+
+ @Override
+ public Token[] newArray(int size) {
+ return new Token[size];
+ }
+ };
+ }
+
+ /**
* Receives generic commands or updates from controllers and the system.
* Callbacks may be registered using {@link #addCallback}.
*/
diff --git a/media/java/android/media/session/MediaSessionManager.java b/media/java/android/media/session/MediaSessionManager.java
index 9291bb0..c73a8d3 100644
--- a/media/java/android/media/session/MediaSessionManager.java
+++ b/media/java/android/media/session/MediaSessionManager.java
@@ -292,7 +292,7 @@
private final IActiveSessionsListener.Stub mStub = new IActiveSessionsListener.Stub() {
@Override
- public void onActiveSessionsChanged(List<MediaSessionToken> tokens)
+ public void onActiveSessionsChanged(List<MediaSession.Token> tokens)
throws RemoteException {
ArrayList<MediaController> controllers = new ArrayList<MediaController>();
int size = tokens.size();
diff --git a/media/java/android/media/session/MediaSessionToken.java b/media/java/android/media/session/MediaSessionToken.java
deleted file mode 100644
index e599189..0000000
--- a/media/java/android/media/session/MediaSessionToken.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.media.session;
-
-import android.media.session.ISessionController;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * Represents an ongoing session. This may be passed to apps by the session
- * owner to allow them to create a {@link MediaController} to communicate with
- * the session.
- */
-public final class MediaSessionToken implements Parcelable {
- private ISessionController mBinder;
-
- /**
- * @hide
- */
- public MediaSessionToken(ISessionController binder) {
- mBinder = binder;
- }
-
- private MediaSessionToken(Parcel in) {
- mBinder = ISessionController.Stub.asInterface(in.readStrongBinder());
- }
-
- /**
- * @hide
- */
- ISessionController getBinder() {
- return mBinder;
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeStrongBinder(mBinder.asBinder());
- }
-
- public static final Parcelable.Creator<MediaSessionToken> CREATOR
- = new Parcelable.Creator<MediaSessionToken>() {
- @Override
- public MediaSessionToken createFromParcel(Parcel in) {
- return new MediaSessionToken(in);
- }
-
- @Override
- public MediaSessionToken[] newArray(int size) {
- return new MediaSessionToken[size];
- }
- };
-}
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index fe68a86..5738a05 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -34,10 +34,9 @@
import android.media.session.ISession;
import android.media.session.ISessionCallback;
import android.media.session.ISessionManager;
-import android.media.session.MediaSessionToken;
+import android.media.session.MediaSession;
import android.media.session.RouteInfo;
import android.media.session.RouteOptions;
-import android.media.session.MediaSession;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
@@ -511,9 +510,9 @@
if (size > 0) {
persistMediaButtonReceiverLocked(records.get(0));
}
- ArrayList<MediaSessionToken> tokens = new ArrayList<MediaSessionToken>();
+ ArrayList<MediaSession.Token> tokens = new ArrayList<MediaSession.Token>();
for (int i = 0; i < size; i++) {
- tokens.add(new MediaSessionToken(records.get(i).getControllerBinder()));
+ tokens.add(new MediaSession.Token(records.get(i).getControllerBinder()));
}
pushRemoteVolumeUpdateLocked(userId);
for (int i = mSessionsListeners.size() - 1; i >= 0; i--) {
diff --git a/tests/OneMedia/src/com/android/onemedia/IPlayerCallback.aidl b/tests/OneMedia/src/com/android/onemedia/IPlayerCallback.aidl
index 2b14384..d04f56f 100644
--- a/tests/OneMedia/src/com/android/onemedia/IPlayerCallback.aidl
+++ b/tests/OneMedia/src/com/android/onemedia/IPlayerCallback.aidl
@@ -15,8 +15,8 @@
package com.android.onemedia;
-import android.media.session.MediaSessionToken;
+import android.media.session.MediaSession;
interface IPlayerCallback {
- void onSessionChanged(in MediaSessionToken session);
-}
\ No newline at end of file
+ void onSessionChanged(in MediaSession.Token session);
+}
diff --git a/tests/OneMedia/src/com/android/onemedia/IPlayerService.aidl b/tests/OneMedia/src/com/android/onemedia/IPlayerService.aidl
index efdbe9a..d4df4c5 100644
--- a/tests/OneMedia/src/com/android/onemedia/IPlayerService.aidl
+++ b/tests/OneMedia/src/com/android/onemedia/IPlayerService.aidl
@@ -15,15 +15,15 @@
package com.android.onemedia;
-import android.media.session.MediaSessionToken;
+import android.media.session.MediaSession;
import android.os.Bundle;
import com.android.onemedia.IPlayerCallback;
import com.android.onemedia.playback.IRequestCallback;
interface IPlayerService {
- MediaSessionToken getSessionToken();
+ MediaSession.Token getSessionToken();
void registerCallback(in IPlayerCallback cb);
void unregisterCallback(in IPlayerCallback cb);
void sendRequest(String action, in Bundle params, in IRequestCallback cb);
-}
\ No newline at end of file
+}
diff --git a/tests/OneMedia/src/com/android/onemedia/PlayerService.java b/tests/OneMedia/src/com/android/onemedia/PlayerService.java
index 934f4ef..58ee4a1 100644
--- a/tests/OneMedia/src/com/android/onemedia/PlayerService.java
+++ b/tests/OneMedia/src/com/android/onemedia/PlayerService.java
@@ -17,7 +17,7 @@
import android.app.Service;
import android.content.Intent;
-import android.media.session.MediaSessionToken;
+import android.media.session.MediaSession;
import android.media.session.PlaybackState;
import android.os.Bundle;
import android.os.IBinder;
@@ -149,7 +149,7 @@
}
@Override
- public MediaSessionToken getSessionToken() throws RemoteException {
+ public MediaSession.Token getSessionToken() throws RemoteException {
return mSession.getSessionToken();
}
}
diff --git a/tests/OneMedia/src/com/android/onemedia/PlayerSession.java b/tests/OneMedia/src/com/android/onemedia/PlayerSession.java
index d6f8118..a220107 100644
--- a/tests/OneMedia/src/com/android/onemedia/PlayerSession.java
+++ b/tests/OneMedia/src/com/android/onemedia/PlayerSession.java
@@ -23,7 +23,6 @@
import android.media.session.RoutePlaybackControls;
import android.media.session.MediaSession;
import android.media.session.MediaSessionManager;
-import android.media.session.MediaSessionToken;
import android.media.session.PlaybackState;
import android.os.Bundle;
import android.util.Log;
@@ -103,7 +102,7 @@
mListener = listener;
}
- public MediaSessionToken getSessionToken() {
+ public MediaSession.Token getSessionToken() {
return mSession.getSessionToken();
}