summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pradeep Sawlani <sawlani@google.com> 2024-11-08 13:23:00 -0800
committer Pradeep Sawlani <sawlani@google.com> 2024-11-18 22:06:39 -0800
commitff38543e4c232f747bb1aaa86f0c3476e84b7c36 (patch)
tree55a2839fdc9dac9bcd42dbf4948fae2c4c42c982
parentc939f2cb680d3b74f4050e35ad51a89c49199758 (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.java49
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, "");
}
}