diff --git a/apex/media/framework/java/android/media/MediaCommunicationManager.java b/apex/media/framework/java/android/media/MediaCommunicationManager.java index b2528cd5516e3..0f00dbb625814 100644 --- a/apex/media/framework/java/android/media/MediaCommunicationManager.java +++ b/apex/media/framework/java/android/media/MediaCommunicationManager.java @@ -74,6 +74,9 @@ public class MediaCommunicationManager { @GuardedBy("mLock") private MediaCommunicationServiceCallbackStub mCallbackStub; + // TODO: remove this when MCS implements dispatchMediaKeyEvent. + private MediaSessionManager mMediaSessionManager; + /** * @hide */ @@ -222,6 +225,14 @@ public class MediaCommunicationManager { return mService; } + // TODO: remove this when MCS implements dispatchMediaKeyEvent. + private MediaSessionManager getMediaSessionManager() { + if (mMediaSessionManager == null) { + mMediaSessionManager = mContext.getSystemService(MediaSessionManager.class); + } + return mMediaSessionManager; + } + private List getSession2Tokens(int userId) { try { MediaParceledListSlice slice = getService().getSession2Tokens(userId); @@ -243,6 +254,14 @@ public class MediaCommunicationManager { @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public void dispatchMediaKeyEvent(@NonNull KeyEvent keyEvent, boolean asSystemService) { Objects.requireNonNull(keyEvent, "keyEvent shouldn't be null"); + + // When MCS handles this, caller is changed. + // TODO: remove this when MCS implementation is done. + if (!asSystemService) { + getMediaSessionManager().dispatchMediaKeyEvent(keyEvent, false); + return; + } + try { getService().dispatchMediaKeyEvent(mContext.getPackageName(), keyEvent, asSystemService); diff --git a/apex/media/service/java/com/android/server/media/MediaCommunicationService.java b/apex/media/service/java/com/android/server/media/MediaCommunicationService.java index 03a2372d55c70..09f65b5e4709a 100644 --- a/apex/media/service/java/com/android/server/media/MediaCommunicationService.java +++ b/apex/media/service/java/com/android/server/media/MediaCommunicationService.java @@ -395,11 +395,7 @@ public class MediaCommunicationService extends SystemService { final long token = Binder.clearCallingIdentity(); try { //TODO: Dispatch key event to media session 2 if required - if (asSystemService) { - mSessionManager.dispatchMediaKeyEventAsSystemService(keyEvent); - } else { - mSessionManager.dispatchMediaKeyEvent(keyEvent, false); - } + mSessionManager.dispatchMediaKeyEvent(keyEvent, asSystemService); } finally { Binder.restoreCallingIdentity(token); }