diff options
author | 2024-11-08 13:23:00 -0800 | |
---|---|---|
committer | 2024-11-18 22:06:39 -0800 | |
commit | ff38543e4c232f747bb1aaa86f0c3476e84b7c36 (patch) | |
tree | 55a2839fdc9dac9bcd42dbf4948fae2c4c42c982 | |
parent | c939f2cb680d3b74f4050e35ad51a89c49199758 (diff) |
am: Add set-media-foreground-service command.
Changes add command to set media foreground service inactive:
am set-media-foreground-service inactive [--user USER_ID] <PACKAGE> <NOTIFICATION_ID>
e.g: adb shell am set-media-foreground-service inactive --user 0 com.spotify.music 2131430868
Notification ID associated with foreground service can be found out
using 'dumpsys activity services` and looking for foregrondId.
Flag: com.android.media.flags.enable_notifying_activity_manager_with_media_session_status_change
BUG: 281762171
Test: atest cts/tests/app/src/android/app/cts/ActivityManagerNotifyMediaFGSTypeTest.java
Change-Id: Iad333b081c989b3164f2aa335361117c28b0bf7b
Signed-off-by: Pradeep Sawlani <sawlani@google.com>
-rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerShellCommand.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java index 02e2c391bb27..d3d3fc968ae6 100644 --- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java +++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java @@ -39,6 +39,8 @@ import static com.android.internal.app.procstats.ProcessStats.ADJ_MEM_FACTOR_CRI import static com.android.internal.app.procstats.ProcessStats.ADJ_MEM_FACTOR_LOW; import static com.android.internal.app.procstats.ProcessStats.ADJ_MEM_FACTOR_MODERATE; import static com.android.internal.app.procstats.ProcessStats.ADJ_MEM_FACTOR_NORMAL; +import static com.android.media.flags.Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange; +import static com.android.media.flags.Flags.FLAG_ENABLE_NOTIFYING_ACTIVITY_MANAGER_WITH_MEDIA_SESSION_STATUS_CHANGE; import static com.android.server.am.ActivityManagerDebugConfig.LOG_WRITER_INFO; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; @@ -445,6 +447,8 @@ final class ActivityManagerShellCommand extends ShellCommand { return runCapabilities(pw); case "set-app-zygote-preload-timeout": return runSetAppZygotePreloadTimeout(pw); + case "set-media-foreground-service": + return runSetMediaForegroundService(pw); default: return handleDefaultCommands(cmd); } @@ -454,6 +458,48 @@ final class ActivityManagerShellCommand extends ShellCommand { return -1; } + int runSetMediaForegroundService(PrintWriter pw) throws RemoteException { + mInternal.enforceCallingPermission( + android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, + "runSetMediaForegroundService()"); + final PrintWriter err = getErrPrintWriter(); + if (!enableNotifyingActivityManagerWithMediaSessionStatusChange()) { + err.println("Error: flag " + + FLAG_ENABLE_NOTIFYING_ACTIVITY_MANAGER_WITH_MEDIA_SESSION_STATUS_CHANGE + + " not enabled"); + return -1; + } + int userId = UserHandle.USER_CURRENT; + final String cmd = getNextArgRequired(); + if ("inactive".equals(cmd)) { + String opt; + while ((opt = getNextOption()) != null) { + if (opt.equals("--user")) { + userId = UserHandle.parseUserArg(getNextArgRequired()); + if (userId == UserHandle.USER_ALL) { + err.println( + "Error: Can't set media fgs inactive with user 'all'"); + return -1; + } + } else { + err.println("Error: Unknown option: " + opt); + return -1; + } + } + final String pkgName = getNextArgRequired(); + final int notificationId = Integer.parseInt(getNextArgRequired()); + if (notificationId == 0) { + err.println("Error: notification id cannot be zero"); + return -1; + } + mInternal.mInternal.notifyInactiveMediaForegroundService(pkgName, + userId, notificationId); + return 0; + } + err.println("Error: Unknown set-media-foreground-service command: " + cmd); + return -1; + } + int runSetAppZygotePreloadTimeout(PrintWriter pw) throws RemoteException { final String timeout = getNextArgRequired(); final int timeoutMs = Integer.parseInt(timeout); @@ -4637,6 +4683,9 @@ final class ActivityManagerShellCommand extends ShellCommand { pw.println(" --protobuf: format output using protobuffer"); pw.println(" set-app-zygote-preload-timeout <TIMEOUT_IN_MS>"); pw.println(" Set the timeout for preloading code in the app-zygote"); + pw.println(" set-media-foreground-service inactive [--user USER_ID]" + + " <PACKAGE> <NOTIFICATION_ID>"); + pw.println(" Set an app's media foreground service inactive."); Intent.printIntentArgsHelp(pw, ""); } } |