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

Commit 5ecc5363 authored by Harpreet "Eli" Sangha's avatar Harpreet "Eli" Sangha
Browse files

Add Prebaked Support to Vibrator Shell Command



Bug: 117808340
Test: Manual

Change-Id: I032d7efddb3a5b1a789ad726a4483d318d04f56e
Signed-off-by: default avatarHarpreet "Eli" Sangha <eliptus@google.com>
parent 36eff60d
Loading
Loading
Loading
Loading
+50 −13
Original line number Diff line number Diff line
@@ -1270,13 +1270,13 @@ public class VibratorService extends IVibratorService.Stub
        public int onCommand(String cmd) {
            if ("vibrate".equals(cmd)) {
                return runVibrate();
            } else if ("prebaked".equals(cmd)) {
                return runPrebaked();
            }
            return handleDefaultCommands(cmd);
        }

        private int runVibrate() {
            Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "runVibrate");
            try {
        private boolean checkDoNotDisturb() {
            try {
                final int zenMode = Settings.Global.getInt(mContext.getContentResolver(),
                        Settings.Global.ZEN_MODE);
@@ -1285,13 +1285,23 @@ public class VibratorService extends IVibratorService.Stub
                        pw.print("Ignoring because device is on DND mode ");
                        pw.println(DebugUtils.flagsToString(Settings.Global.class, "ZEN_MODE_",
                                zenMode));
                            return 0;
                        return true;
                    }
                }
            } catch (SettingNotFoundException e) {
                // ignore
            }

            return false;
        }

        private int runVibrate() {
            Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "runVibrate");
            try {
                if (checkDoNotDisturb()) {
                    return 0;
                }

                final long duration = Long.parseLong(getNextArgRequired());
                if (duration > MAX_VIBRATION_MS) {
                    throw new IllegalArgumentException("maximum duration is " + MAX_VIBRATION_MS);
@@ -1311,6 +1321,30 @@ public class VibratorService extends IVibratorService.Stub
            }
        }

        private int runPrebaked() {
            Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "runPrebaked");
            try {
                if (checkDoNotDisturb()) {
                    return 0;
                }

                final int id = Integer.parseInt(getNextArgRequired());

                String description = getNextArg();
                if (description == null) {
                    description = "Shell command";
                }

                VibrationEffect effect =
                        VibrationEffect.get(id, false);
                vibrate(Binder.getCallingUid(), description, effect, AudioAttributes.USAGE_UNKNOWN,
                        "Shell Command", mToken);
                return 0;
            } finally {
                Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR);
            }
        }

        @Override
        public void onHelp() {
            try (PrintWriter pw = getOutPrintWriter();) {
@@ -1321,6 +1355,9 @@ public class VibratorService extends IVibratorService.Stub
                pw.println("  vibrate duration [description]");
                pw.println("    Vibrates for duration milliseconds; ignored when device is on DND ");
                pw.println("    (Do Not Disturb) mode.");
                pw.println("  prebaked effect-id [description]");
                pw.println("    Vibrates with prebaked effect; ignored when device is on DND ");
                pw.println("    (Do Not Disturb) mode.");
                pw.println("");
            }
        }