Loading media/java/android/media/IRemoteVolumeController.aidl +4 −3 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ * * 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. Loading @@ -16,7 +17,7 @@ package android.media; import android.media.session.ISessionController; import android.media.session.MediaSession; /** * AIDL for the MediaSessionService to report interesting events on remote playback Loading @@ -25,8 +26,8 @@ import android.media.session.ISessionController; * @hide */ oneway interface IRemoteVolumeController { void remoteVolumeChanged(in ISessionController session, int flags); void remoteVolumeChanged(in MediaSession.Token sessionToken, int flags); // sets the default session to use with the slider, replaces remoteSliderVisibility // on IVolumeController void updateRemoteController(in ISessionController session); void updateRemoteController(in MediaSession.Token sessionToken); } packages/SystemUI/src/com/android/systemui/volume/MediaSessions.java +13 −12 Original line number Diff line number Diff line Loading @@ -25,9 +25,9 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.media.IRemoteVolumeController; import android.media.MediaMetadata; import android.media.session.ISessionController; import android.media.session.MediaController; import android.media.session.MediaController.PlaybackInfo; import android.media.session.MediaSession; import android.media.session.MediaSession.QueueItem; import android.media.session.MediaSession.Token; import android.media.session.MediaSessionManager; Loading Loading @@ -113,17 +113,17 @@ public class MediaSessions { r.controller.setVolumeTo(level, 0); } private void onRemoteVolumeChangedH(ISessionController session, int flags) { final MediaController controller = new MediaController(mContext, session); private void onRemoteVolumeChangedH(MediaSession.Token sessionToken, int flags) { final MediaController controller = new MediaController(mContext, sessionToken); if (D.BUG) Log.d(TAG, "remoteVolumeChangedH " + controller.getPackageName() + " " + Util.audioManagerFlagsToString(flags)); final Token token = controller.getSessionToken(); mCallbacks.onRemoteVolumeChanged(token, flags); } private void onUpdateRemoteControllerH(ISessionController session) { final MediaController controller = session != null ? new MediaController(mContext, session) : null; private void onUpdateRemoteControllerH(MediaSession.Token sessionToken) { final MediaController controller = sessionToken != null ? new MediaController(mContext, sessionToken) : null; final String pkg = controller != null ? controller.getPackageName() : null; if (D.BUG) Log.d(TAG, "updateRemoteControllerH " + pkg); // this may be our only indication that a remote session is changed, refresh Loading Loading @@ -332,15 +332,16 @@ public class MediaSessions { private final IRemoteVolumeController mRvc = new IRemoteVolumeController.Stub() { @Override public void remoteVolumeChanged(ISessionController session, int flags) public void remoteVolumeChanged(MediaSession.Token sessionToken, int flags) throws RemoteException { mHandler.obtainMessage(H.REMOTE_VOLUME_CHANGED, flags, 0, session).sendToTarget(); mHandler.obtainMessage(H.REMOTE_VOLUME_CHANGED, flags, 0, sessionToken).sendToTarget(); } @Override public void updateRemoteController(final ISessionController session) public void updateRemoteController(final MediaSession.Token sessionToken) throws RemoteException { mHandler.obtainMessage(H.UPDATE_REMOTE_CONTROLLER, session).sendToTarget(); mHandler.obtainMessage(H.UPDATE_REMOTE_CONTROLLER, sessionToken).sendToTarget(); } }; Loading @@ -360,10 +361,10 @@ public class MediaSessions { onActiveSessionsUpdatedH(mMgr.getActiveSessions(null)); break; case REMOTE_VOLUME_CHANGED: onRemoteVolumeChangedH((ISessionController) msg.obj, msg.arg1); onRemoteVolumeChangedH((MediaSession.Token) msg.obj, msg.arg1); break; case UPDATE_REMOTE_CONTROLLER: onUpdateRemoteControllerH((ISessionController) msg.obj); onUpdateRemoteControllerH((MediaSession.Token) msg.obj); break; } } Loading services/core/java/com/android/server/media/MediaSessionRecord.java +11 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { 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; Loading Loading @@ -128,6 +129,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { 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; Loading Loading @@ -156,6 +158,15 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { return mController; } /** * Get the session token for creating {@link MediaController}. * * @return The session token. */ public MediaSession.Token getSessionToken() { return mSessionToken; } /** * Get the info for this session. * Loading services/core/java/com/android/server/media/MediaSessionServiceImpl.java +5 −10 Original line number Diff line number Diff line Loading @@ -51,7 +51,6 @@ import android.media.session.ICallback; 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; Loading Loading @@ -290,9 +289,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { 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); } Loading Loading @@ -618,7 +615,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { 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--) { Loading @@ -645,9 +642,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { 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); } Loading Loading @@ -864,7 +859,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { MediaSessionRecord mediaButtonSession = getMediaButtonSessionLocked(); if (mediaButtonSession != null) { mCallback.onAddressedPlayerChangedToMediaSession( new MediaSession.Token(mediaButtonSession.getControllerLink())); mediaButtonSession.getSessionToken()); } else if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null) { mCallback.onAddressedPlayerChangedToMediaButtonReceiver( mCurrentFullUserRecord.mLastMediaButtonReceiver Loading Loading @@ -1804,7 +1799,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { 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); } Loading Loading
media/java/android/media/IRemoteVolumeController.aidl +4 −3 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ * * 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. Loading @@ -16,7 +17,7 @@ package android.media; import android.media.session.ISessionController; import android.media.session.MediaSession; /** * AIDL for the MediaSessionService to report interesting events on remote playback Loading @@ -25,8 +26,8 @@ import android.media.session.ISessionController; * @hide */ oneway interface IRemoteVolumeController { void remoteVolumeChanged(in ISessionController session, int flags); void remoteVolumeChanged(in MediaSession.Token sessionToken, int flags); // sets the default session to use with the slider, replaces remoteSliderVisibility // on IVolumeController void updateRemoteController(in ISessionController session); void updateRemoteController(in MediaSession.Token sessionToken); }
packages/SystemUI/src/com/android/systemui/volume/MediaSessions.java +13 −12 Original line number Diff line number Diff line Loading @@ -25,9 +25,9 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.media.IRemoteVolumeController; import android.media.MediaMetadata; import android.media.session.ISessionController; import android.media.session.MediaController; import android.media.session.MediaController.PlaybackInfo; import android.media.session.MediaSession; import android.media.session.MediaSession.QueueItem; import android.media.session.MediaSession.Token; import android.media.session.MediaSessionManager; Loading Loading @@ -113,17 +113,17 @@ public class MediaSessions { r.controller.setVolumeTo(level, 0); } private void onRemoteVolumeChangedH(ISessionController session, int flags) { final MediaController controller = new MediaController(mContext, session); private void onRemoteVolumeChangedH(MediaSession.Token sessionToken, int flags) { final MediaController controller = new MediaController(mContext, sessionToken); if (D.BUG) Log.d(TAG, "remoteVolumeChangedH " + controller.getPackageName() + " " + Util.audioManagerFlagsToString(flags)); final Token token = controller.getSessionToken(); mCallbacks.onRemoteVolumeChanged(token, flags); } private void onUpdateRemoteControllerH(ISessionController session) { final MediaController controller = session != null ? new MediaController(mContext, session) : null; private void onUpdateRemoteControllerH(MediaSession.Token sessionToken) { final MediaController controller = sessionToken != null ? new MediaController(mContext, sessionToken) : null; final String pkg = controller != null ? controller.getPackageName() : null; if (D.BUG) Log.d(TAG, "updateRemoteControllerH " + pkg); // this may be our only indication that a remote session is changed, refresh Loading Loading @@ -332,15 +332,16 @@ public class MediaSessions { private final IRemoteVolumeController mRvc = new IRemoteVolumeController.Stub() { @Override public void remoteVolumeChanged(ISessionController session, int flags) public void remoteVolumeChanged(MediaSession.Token sessionToken, int flags) throws RemoteException { mHandler.obtainMessage(H.REMOTE_VOLUME_CHANGED, flags, 0, session).sendToTarget(); mHandler.obtainMessage(H.REMOTE_VOLUME_CHANGED, flags, 0, sessionToken).sendToTarget(); } @Override public void updateRemoteController(final ISessionController session) public void updateRemoteController(final MediaSession.Token sessionToken) throws RemoteException { mHandler.obtainMessage(H.UPDATE_REMOTE_CONTROLLER, session).sendToTarget(); mHandler.obtainMessage(H.UPDATE_REMOTE_CONTROLLER, sessionToken).sendToTarget(); } }; Loading @@ -360,10 +361,10 @@ public class MediaSessions { onActiveSessionsUpdatedH(mMgr.getActiveSessions(null)); break; case REMOTE_VOLUME_CHANGED: onRemoteVolumeChangedH((ISessionController) msg.obj, msg.arg1); onRemoteVolumeChangedH((MediaSession.Token) msg.obj, msg.arg1); break; case UPDATE_REMOTE_CONTROLLER: onUpdateRemoteControllerH((ISessionController) msg.obj); onUpdateRemoteControllerH((MediaSession.Token) msg.obj); break; } } Loading
services/core/java/com/android/server/media/MediaSessionRecord.java +11 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { 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; Loading Loading @@ -128,6 +129,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { 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; Loading Loading @@ -156,6 +158,15 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { return mController; } /** * Get the session token for creating {@link MediaController}. * * @return The session token. */ public MediaSession.Token getSessionToken() { return mSessionToken; } /** * Get the info for this session. * Loading
services/core/java/com/android/server/media/MediaSessionServiceImpl.java +5 −10 Original line number Diff line number Diff line Loading @@ -51,7 +51,6 @@ import android.media.session.ICallback; 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; Loading Loading @@ -290,9 +289,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { 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); } Loading Loading @@ -618,7 +615,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { 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--) { Loading @@ -645,9 +642,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { 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); } Loading Loading @@ -864,7 +859,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { MediaSessionRecord mediaButtonSession = getMediaButtonSessionLocked(); if (mediaButtonSession != null) { mCallback.onAddressedPlayerChangedToMediaSession( new MediaSession.Token(mediaButtonSession.getControllerLink())); mediaButtonSession.getSessionToken()); } else if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null) { mCallback.onAddressedPlayerChangedToMediaButtonReceiver( mCurrentFullUserRecord.mLastMediaButtonReceiver Loading Loading @@ -1804,7 +1799,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { 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); } Loading