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
This commit is contained in:
Jeff Brown
2014-06-24 20:46:03 -07:00
parent 854157308e
commit dba34ba35c
14 changed files with 88 additions and 112 deletions

View File

@@ -509,6 +509,10 @@ aidl_files := \
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 \

View File

@@ -4699,7 +4699,7 @@ package android.app {
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 @@ package android.media.session {
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 @@ package android.media.session {
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 @@ package android.media.session {
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 @@ package android.media.session {
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);

View File

@@ -27,7 +27,7 @@ import android.graphics.Canvas;
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 @@ public class Notification implements Parcelable
/**
* {@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 @@ public class Notification implements Parcelable
* {@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 @@ public class Notification implements Parcelable
static final int MAX_MEDIA_BUTTONS = 5;
private int[] mActionsToShowInCompact = null;
private MediaSessionToken mToken;
private MediaSession.Token mToken;
public MediaStyle() {
}
@@ -3274,10 +3274,10 @@ public class Notification implements Parcelable
}
/**
* 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;
}

View File

@@ -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);
}
void onActiveSessionsChanged(in List<MediaSession.Token> sessions);
}

View File

@@ -42,7 +42,7 @@ import java.util.ArrayList;
* <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 @@ public final class MediaController {
* @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());
}

View File

@@ -15,4 +15,4 @@
package android.media.session;
parcelable MediaSessionToken;
parcelable MediaSession.Token;

View File

@@ -32,6 +32,8 @@ import android.os.Bundle;
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 @@ public final class MediaSession {
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 @@ public final class MediaSession {
} catch (RemoteException e) {
throw new RuntimeException("Dead object in MediaSessionController constructor: ", e);
}
mSessionToken = new MediaSessionToken(controllerBinder);
mSessionToken = new Token(controllerBinder);
}
/**
@@ -370,7 +372,7 @@ public final class MediaSession {
* @return A token that can be used to create a MediaController for this
* session
*/
public @NonNull MediaSessionToken getSessionToken() {
public @NonNull Token getSessionToken() {
return mSessionToken;
}
@@ -696,6 +698,49 @@ public final class MediaSession {
}
}
/**
* 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}.

View File

@@ -292,7 +292,7 @@ public final class MediaSessionManager {
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();

View File

@@ -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];
}
};
}

View File

@@ -34,10 +34,9 @@ import android.media.session.IActiveSessionsListener;
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 @@ public class MediaSessionService extends SystemService implements Monitor {
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--) {

View File

@@ -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);
}
void onSessionChanged(in MediaSession.Token session);
}

View File

@@ -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);
}
}

View File

@@ -17,7 +17,7 @@ package com.android.onemedia;
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 @@ public class PlayerService extends Service {
}
@Override
public MediaSessionToken getSessionToken() throws RemoteException {
public MediaSession.Token getSessionToken() throws RemoteException {
return mSession.getSessionToken();
}
}

View File

@@ -23,7 +23,6 @@ import android.media.session.RouteOptions;
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 @@ public class PlayerSession {
mListener = listener;
}
public MediaSessionToken getSessionToken() {
public MediaSession.Token getSessionToken() {
return mSession.getSessionToken();
}