Use MediaSession.Token instead of ISessionController
ISessionController will be moved to mainline module.
Test: pass MediaSessionTest and MediaControllerTest
Change-Id: I45b4da502e2b262730255a6cda1ab932d154ecbd
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java
index d8c2432..af790f2 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecord.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecord.java
@@ -78,6 +78,7 @@
private final String mPackageName;
private final String mTag;
private final ControllerLink mController;
+ private final MediaSession.Token mSessionToken;
private final SessionLink mSession;
private final SessionCb mSessionCb;
private final MediaSessionService.ServiceImpl mService;
@@ -128,6 +129,7 @@
mPackageName = ownerPackageName;
mTag = tag;
mController = new ControllerLink(new ControllerStub());
+ mSessionToken = new MediaSession.Token(mController);
mSession = new SessionLink(new SessionStub());
mSessionCb = new SessionCb(cb);
mService = service;
@@ -157,6 +159,15 @@
}
/**
+ * Get the session token for creating {@link MediaController}.
+ *
+ * @return The session token.
+ */
+ public MediaSession.Token getSessionToken() {
+ return mSessionToken;
+ }
+
+ /**
* Get the info for this session.
*
* @return Info that identifies this session.
diff --git a/services/core/java/com/android/server/media/MediaSessionServiceImpl.java b/services/core/java/com/android/server/media/MediaSessionServiceImpl.java
index e3ae8a7..1541b1d 100644
--- a/services/core/java/com/android/server/media/MediaSessionServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaSessionServiceImpl.java
@@ -51,7 +51,6 @@
import android.media.session.IOnMediaKeyListener;
import android.media.session.IOnVolumeKeyLongPressListener;
import android.media.session.ISession2TokensListener;
-import android.media.session.ISessionController;
import android.media.session.ISessionManager;
import android.media.session.MediaSession;
import android.media.session.MediaSessionManager;
@@ -290,9 +289,7 @@
return;
}
try {
- mRvc.remoteVolumeChanged(
- ISessionController.Stub.asInterface(session.getControllerLink().getBinder()),
- flags);
+ mRvc.remoteVolumeChanged(session.getSessionToken(), flags);
} catch (Exception e) {
Log.wtf(TAG, "Error sending volume change to system UI.", e);
}
@@ -618,7 +615,7 @@
int size = records.size();
ArrayList<MediaSession.Token> tokens = new ArrayList<MediaSession.Token>();
for (int i = 0; i < size; i++) {
- tokens.add(new MediaSession.Token(records.get(i).getControllerLink()));
+ tokens.add(records.get(i).getSessionToken());
}
pushRemoteVolumeUpdateLocked(userId);
for (int i = mSessionsListeners.size() - 1; i >= 0; i--) {
@@ -645,9 +642,7 @@
return;
}
MediaSessionRecord record = user.mPriorityStack.getDefaultRemoteSession(userId);
- mRvc.updateRemoteController(record == null ? null
- : ISessionController.Stub.asInterface(
- record.getControllerLink().getBinder()));
+ mRvc.updateRemoteController(record == null ? null : record.getSessionToken());
} catch (RemoteException e) {
Log.wtf(TAG, "Error sending default remote volume to sys ui.", e);
}
@@ -864,7 +859,7 @@
MediaSessionRecord mediaButtonSession = getMediaButtonSessionLocked();
if (mediaButtonSession != null) {
mCallback.onAddressedPlayerChangedToMediaSession(
- new MediaSession.Token(mediaButtonSession.getControllerLink()));
+ mediaButtonSession.getSessionToken());
} else if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null) {
mCallback.onAddressedPlayerChangedToMediaButtonReceiver(
mCurrentFullUserRecord.mLastMediaButtonReceiver
@@ -1804,7 +1799,7 @@
if (mCurrentFullUserRecord.mCallback != null) {
try {
mCurrentFullUserRecord.mCallback.onMediaKeyEventDispatchedToMediaSession(
- keyEvent, new MediaSession.Token(session.getControllerLink()));
+ keyEvent, session.getSessionToken());
} catch (RemoteException e) {
Log.w(TAG, "Failed to send callback", e);
}