Loading services/core/java/com/android/server/media/MediaSessionService.java +16 −45 Original line number Diff line number Diff line Loading @@ -290,31 +290,12 @@ public class MediaSessionService extends SystemService implements Monitor { } user.mPriorityStack.onSessionActiveStateChanged(record); } notifyActivityManagerWithActiveStateChanges(record, record.isActive()); setForegroundServiceAllowance( record, /* allowRunningInForeground= */ record.isActive()); mHandler.postSessionsChanged(record); } } private void notifyActivityManagerWithActiveStateChanges( MediaSessionRecordImpl record, boolean isActive) { if (!Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange()) { return; } ForegroundServiceDelegationOptions foregroundServiceDelegationOptions = record.getForegroundServiceDelegationOptions(); if (foregroundServiceDelegationOptions == null) { // This record doesn't support FGS delegation. In practice, this is MediaSession2. return; } if (isActive) { mActivityManagerInternal.startForegroundServiceDelegate( foregroundServiceDelegationOptions, /* connection= */ null); } else { mActivityManagerInternal.stopForegroundServiceDelegate( foregroundServiceDelegationOptions); } } // Currently only media1 can become global priority session. void setGlobalPrioritySession(MediaSessionRecord record) { synchronized (mLock) { Loading Loading @@ -407,27 +388,10 @@ public class MediaSessionService extends SystemService implements Monitor { return; } user.mPriorityStack.onPlaybackStateChanged(record, shouldUpdatePriority); notifyActivityManagerWithPlaybackStateChanges(record, playbackState); } } private void notifyActivityManagerWithPlaybackStateChanges( MediaSessionRecordImpl record, PlaybackState playbackState) { if (!Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange()) { return; if (playbackState != null) { setForegroundServiceAllowance( record, playbackState.shouldAllowServiceToRunInForeground()); } ForegroundServiceDelegationOptions foregroundServiceDelegationOptions = record.getForegroundServiceDelegationOptions(); if (foregroundServiceDelegationOptions == null || playbackState == null) { // This record doesn't support FGS delegation. In practice, this is MediaSession2. return; } if (playbackState.shouldAllowServiceToRunInForeground()) { mActivityManagerInternal.startForegroundServiceDelegate( foregroundServiceDelegationOptions, /* connection= */ null); } else { mActivityManagerInternal.stopForegroundServiceDelegate( foregroundServiceDelegationOptions); } } Loading Loading @@ -591,11 +555,12 @@ public class MediaSessionService extends SystemService implements Monitor { } session.close(); notifyActivityManagerWithSessionDestroyed(session); setForegroundServiceAllowance(session, /* allowRunningInForeground= */ false); mHandler.postSessionsChanged(session); } private void notifyActivityManagerWithSessionDestroyed(MediaSessionRecordImpl record) { private void setForegroundServiceAllowance( MediaSessionRecordImpl record, boolean allowRunningInForeground) { if (!Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange()) { return; } Loading @@ -605,7 +570,13 @@ public class MediaSessionService extends SystemService implements Monitor { // This record doesn't support FGS delegation. In practice, this is MediaSession2. return; } mActivityManagerInternal.stopForegroundServiceDelegate(foregroundServiceDelegationOptions); if (allowRunningInForeground) { mActivityManagerInternal.startForegroundServiceDelegate( foregroundServiceDelegationOptions, /* connection= */ null); } else { mActivityManagerInternal.stopForegroundServiceDelegate( foregroundServiceDelegationOptions); } } void tempAllowlistTargetPkgIfPossible(int targetUid, String targetPackage, Loading Loading
services/core/java/com/android/server/media/MediaSessionService.java +16 −45 Original line number Diff line number Diff line Loading @@ -290,31 +290,12 @@ public class MediaSessionService extends SystemService implements Monitor { } user.mPriorityStack.onSessionActiveStateChanged(record); } notifyActivityManagerWithActiveStateChanges(record, record.isActive()); setForegroundServiceAllowance( record, /* allowRunningInForeground= */ record.isActive()); mHandler.postSessionsChanged(record); } } private void notifyActivityManagerWithActiveStateChanges( MediaSessionRecordImpl record, boolean isActive) { if (!Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange()) { return; } ForegroundServiceDelegationOptions foregroundServiceDelegationOptions = record.getForegroundServiceDelegationOptions(); if (foregroundServiceDelegationOptions == null) { // This record doesn't support FGS delegation. In practice, this is MediaSession2. return; } if (isActive) { mActivityManagerInternal.startForegroundServiceDelegate( foregroundServiceDelegationOptions, /* connection= */ null); } else { mActivityManagerInternal.stopForegroundServiceDelegate( foregroundServiceDelegationOptions); } } // Currently only media1 can become global priority session. void setGlobalPrioritySession(MediaSessionRecord record) { synchronized (mLock) { Loading Loading @@ -407,27 +388,10 @@ public class MediaSessionService extends SystemService implements Monitor { return; } user.mPriorityStack.onPlaybackStateChanged(record, shouldUpdatePriority); notifyActivityManagerWithPlaybackStateChanges(record, playbackState); } } private void notifyActivityManagerWithPlaybackStateChanges( MediaSessionRecordImpl record, PlaybackState playbackState) { if (!Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange()) { return; if (playbackState != null) { setForegroundServiceAllowance( record, playbackState.shouldAllowServiceToRunInForeground()); } ForegroundServiceDelegationOptions foregroundServiceDelegationOptions = record.getForegroundServiceDelegationOptions(); if (foregroundServiceDelegationOptions == null || playbackState == null) { // This record doesn't support FGS delegation. In practice, this is MediaSession2. return; } if (playbackState.shouldAllowServiceToRunInForeground()) { mActivityManagerInternal.startForegroundServiceDelegate( foregroundServiceDelegationOptions, /* connection= */ null); } else { mActivityManagerInternal.stopForegroundServiceDelegate( foregroundServiceDelegationOptions); } } Loading Loading @@ -591,11 +555,12 @@ public class MediaSessionService extends SystemService implements Monitor { } session.close(); notifyActivityManagerWithSessionDestroyed(session); setForegroundServiceAllowance(session, /* allowRunningInForeground= */ false); mHandler.postSessionsChanged(session); } private void notifyActivityManagerWithSessionDestroyed(MediaSessionRecordImpl record) { private void setForegroundServiceAllowance( MediaSessionRecordImpl record, boolean allowRunningInForeground) { if (!Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange()) { return; } Loading @@ -605,7 +570,13 @@ public class MediaSessionService extends SystemService implements Monitor { // This record doesn't support FGS delegation. In practice, this is MediaSession2. return; } mActivityManagerInternal.stopForegroundServiceDelegate(foregroundServiceDelegationOptions); if (allowRunningInForeground) { mActivityManagerInternal.startForegroundServiceDelegate( foregroundServiceDelegationOptions, /* connection= */ null); } else { mActivityManagerInternal.stopForegroundServiceDelegate( foregroundServiceDelegationOptions); } } void tempAllowlistTargetPkgIfPossible(int targetUid, String targetPackage, Loading