diff options
| author | 2017-02-13 20:54:34 +0000 | |
|---|---|---|
| committer | 2017-02-13 20:54:36 +0000 | |
| commit | 31a7d1b03d232ecd2a982c0b18d7c2646880f27c (patch) | |
| tree | e46979ab8611c61a363e4bb2c23c530760d8f6b2 | |
| parent | 9f5ce9354940e2bd4b723e34f89ef28e8d4d0c5c (diff) | |
| parent | a5281001dcd420e0d14ccb3d4872da0f200bc9b2 (diff) | |
Merge "Created shell cmd to vibrate."
| -rw-r--r-- | services/core/java/com/android/server/VibratorService.java | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java index ab036c7163d3..888832515277 100644 --- a/services/core/java/com/android/server/VibratorService.java +++ b/services/core/java/com/android/server/VibratorService.java @@ -32,9 +32,12 @@ import android.os.PowerManager; import android.os.PowerManagerInternal; import android.os.Process; import android.os.RemoteException; +import android.os.ResultReceiver; import android.os.IBinder; import android.os.Binder; import android.os.ServiceManager; +import android.os.ShellCallback; +import android.os.ShellCommand; import android.os.SystemClock; import android.os.UserHandle; import android.os.Vibrator; @@ -784,4 +787,58 @@ public class VibratorService extends IVibratorService.Stub } } } + + @Override + public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err, + String[] args, ShellCallback callback, ResultReceiver resultReceiver) + throws RemoteException { + new VibratorShellCommand(this).exec(this, in, out, err, args, callback, resultReceiver); + } + + private final class VibratorShellCommand extends ShellCommand { + + private static final long MAX_VIBRATION_MS = 200; + + private final IBinder mToken; + + private VibratorShellCommand(IBinder token) { + mToken = token; + } + + @Override + public int onCommand(String cmd) { + if ("vibrate".equals(cmd)) { + return runVibrate(); + } + return handleDefaultCommands(cmd); + } + + private int runVibrate() { + final long duration = Long.parseLong(getNextArgRequired()); + if (duration > MAX_VIBRATION_MS) { + throw new IllegalArgumentException("maximum duration is " + MAX_VIBRATION_MS); + } + String description = getNextArg(); + if (description == null) { + description = "Shell command"; + } + vibrate(Binder.getCallingUid(), description, duration, AudioAttributes.USAGE_UNKNOWN, + mToken); + return 0; + } + + @Override + public void onHelp() { + try (PrintWriter pw = getOutPrintWriter();) { + pw.println("Vibrator commands:"); + pw.println(" help"); + pw.println(" Prints this help text."); + pw.println(""); + pw.println(" vibrate duration [description]"); + pw.println(" Vibrates for duration milliseconds."); + pw.println(""); + } + } + } + } |