Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f04803fb authored by Jean-Michel Trivi's avatar Jean-Michel Trivi
Browse files

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
parent fb810e65
Loading
Loading
Loading
Loading
+62 −0
Original line number Diff line number Diff line
@@ -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;
    }
}