diff options
| author | 2024-04-03 15:18:31 -0700 | |
|---|---|---|
| committer | 2024-04-03 15:18:31 -0700 | |
| commit | f04803fb0bc5ddef702724f968e9fe73516ba6f8 (patch) | |
| tree | 15ef2a9995cfea55fdda0aef33e96a8d43ce3cc9 | |
| parent | fb810e6551901d6349732282ced0ecba5f207086 (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.java | 62 |
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; + } } |