summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jean-Michel Trivi <jmtrivi@google.com> 2024-04-03 15:18:31 -0700
committer Jean-Michel Trivi <jmtrivi@google.com> 2024-04-03 15:18:31 -0700
commitf04803fb0bc5ddef702724f968e9fe73516ba6f8 (patch)
tree15ef2a9995cfea55fdda0aef33e96a8d43ce3cc9
parentfb810e6551901d6349732282ced0ecba5f207086 (diff)
AudioService shell commands for volume
Add shell commands for volume control: - set-vol STREAM VOLUME - adj-mute STREAM - adj-unmute STREAM Bug: 332410019 Test: adb shell cmd audio set-volume 1 5 Test: adb shell cmd audio adj-mute 3 Test: adb shell cmd audio adj-unmute 3 Change-Id: Idebb12a5777723de4b8ce2f6f7a5392ec395cdf0
-rw-r--r--services/core/java/com/android/server/audio/AudioManagerShellCommand.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/audio/AudioManagerShellCommand.java b/services/core/java/com/android/server/audio/AudioManagerShellCommand.java
index 85acf707677a..570d4e9857e6 100644
--- a/services/core/java/com/android/server/audio/AudioManagerShellCommand.java
+++ b/services/core/java/com/android/server/audio/AudioManagerShellCommand.java
@@ -53,6 +53,12 @@ class AudioManagerShellCommand extends ShellCommand {
return getSoundDoseValue();
case "reset-sound-dose-timeout":
return resetSoundDoseTimeout();
+ case "set-volume":
+ return setVolume();
+ case "adj-mute":
+ return adjMute();
+ case "adj-unmute":
+ return adjUnmute();
}
return 0;
}
@@ -78,6 +84,12 @@ class AudioManagerShellCommand extends ShellCommand {
pw.println(" Returns the current sound dose value");
pw.println(" reset-sound-dose-timeout");
pw.println(" Resets the sound dose timeout used for momentary exposure");
+ pw.println(" set-volume STREAM_TYPE VOLUME_INDEX");
+ pw.println(" Sets the volume for STREAM_TYPE to VOLUME_INDEX");
+ pw.println(" adj-mute STREAM_TYPE");
+ pw.println(" mutes the STREAM_TYPE");
+ pw.println(" adj-unmute STREAM_TYPE");
+ pw.println(" unmutes the STREAM_TYPE");
}
private int setSurroundFormatEnabled() {
@@ -216,4 +228,54 @@ class AudioManagerShellCommand extends ShellCommand {
getOutPrintWriter().println("Reset sound dose momentary exposure timeout");
return 0;
}
+
+ private int setVolume() {
+ final Context context = mService.mContext;
+ final AudioManager am = context.getSystemService(AudioManager.class);
+ final int stream = readIntArg();
+ final int index = readIntArg();
+ getOutPrintWriter().println("calling AudioManager.setStreamVolume("
+ + stream + ", " + index + ", 0)");
+ am.setStreamVolume(stream, index, 0);
+ return 0;
+ }
+
+ private int adjMute() {
+ final Context context = mService.mContext;
+ final AudioManager am = context.getSystemService(AudioManager.class);
+ final int stream = readIntArg();
+ getOutPrintWriter().println("calling AudioManager.adjustStreamVolume("
+ + stream + ", AudioManager.ADJUST_MUTE, 0)");
+ am.adjustStreamVolume(stream, AudioManager.ADJUST_MUTE, 0);
+ return 0;
+ }
+
+ private int adjUnmute() {
+ final Context context = mService.mContext;
+ final AudioManager am = context.getSystemService(AudioManager.class);
+ final int stream = readIntArg();
+ getOutPrintWriter().println("calling AudioManager.adjustStreamVolume("
+ + stream + ", AudioManager.ADJUST_UNMUTE, 0)");
+ am.adjustStreamVolume(stream, AudioManager.ADJUST_UNMUTE, 0);
+ return 0;
+ }
+
+ private int readIntArg() throws IllegalArgumentException {
+ String argText = getNextArg();
+
+ if (argText == null) {
+ getErrPrintWriter().println("Error: no argument provided");
+ throw new IllegalArgumentException("No argument provided");
+ }
+
+ int argIntVal = Integer.MIN_VALUE;
+ try {
+ argIntVal = Integer.parseInt(argText);
+ } catch (NumberFormatException e) {
+ getErrPrintWriter().println("Error: wrong format for argument " + argText);
+ throw new IllegalArgumentException("Wrong format for argument " + argText);
+ }
+
+ return argIntVal;
+ }
}