diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/hardware/input/InputDeviceVibrator.java | 5 | ||||
| -rw-r--r-- | core/java/android/hardware/input/InputDeviceVibratorManager.java | 5 | ||||
| -rw-r--r-- | core/java/android/os/IVibratorManagerService.aidl | 2 | ||||
| -rw-r--r-- | core/java/android/os/NullVibrator.java | 4 | ||||
| -rw-r--r-- | core/java/android/os/SystemVibrator.java | 9 | ||||
| -rw-r--r-- | core/java/android/os/SystemVibratorManager.java | 67 | ||||
| -rw-r--r-- | core/java/android/os/Vibrator.java | 10 | ||||
| -rw-r--r-- | core/java/android/os/VibratorManager.java | 10 |
8 files changed, 71 insertions, 41 deletions
diff --git a/core/java/android/hardware/input/InputDeviceVibrator.java b/core/java/android/hardware/input/InputDeviceVibrator.java index a4817ae27fa5..1ab183626d2e 100644 --- a/core/java/android/hardware/input/InputDeviceVibrator.java +++ b/core/java/android/hardware/input/InputDeviceVibrator.java @@ -175,4 +175,9 @@ final class InputDeviceVibrator extends Vibrator { public void cancel() { mInputManager.cancelVibrate(mDeviceId, mToken); } + + @Override + public void cancel(int usageFilter) { + cancel(); + } } diff --git a/core/java/android/hardware/input/InputDeviceVibratorManager.java b/core/java/android/hardware/input/InputDeviceVibratorManager.java index ed0efffbb346..7caff7209cc5 100644 --- a/core/java/android/hardware/input/InputDeviceVibratorManager.java +++ b/core/java/android/hardware/input/InputDeviceVibratorManager.java @@ -134,4 +134,9 @@ public class InputDeviceVibratorManager extends VibratorManager public void cancel() { mInputManager.cancelVibrate(mDeviceId, mToken); } + + @Override + public void cancel(int usageFilter) { + cancel(); + } } diff --git a/core/java/android/os/IVibratorManagerService.aidl b/core/java/android/os/IVibratorManagerService.aidl index c58cc4f9988f..a0d6ce1ba108 100644 --- a/core/java/android/os/IVibratorManagerService.aidl +++ b/core/java/android/os/IVibratorManagerService.aidl @@ -32,5 +32,5 @@ interface IVibratorManagerService { in CombinedVibration vibration, in VibrationAttributes attributes); void vibrate(int uid, String opPkg, in CombinedVibration vibration, in VibrationAttributes attributes, String reason, IBinder token); - void cancelVibrate(IBinder token); + void cancelVibrate(int usageFilter, IBinder token); } diff --git a/core/java/android/os/NullVibrator.java b/core/java/android/os/NullVibrator.java index 6bb016519a84..7859b5cfe5df 100644 --- a/core/java/android/os/NullVibrator.java +++ b/core/java/android/os/NullVibrator.java @@ -54,4 +54,8 @@ public class NullVibrator extends Vibrator { @Override public void cancel() { } + + @Override + public void cancel(int usageFilter) { + } } diff --git a/core/java/android/os/SystemVibrator.java b/core/java/android/os/SystemVibrator.java index 2e8ecb59b0d3..70808594225f 100644 --- a/core/java/android/os/SystemVibrator.java +++ b/core/java/android/os/SystemVibrator.java @@ -256,6 +256,15 @@ public class SystemVibrator extends Vibrator { mVibratorManager.cancel(); } + @Override + public void cancel(int usageFilter) { + if (mVibratorManager == null) { + Log.w(TAG, "Failed to cancel vibrate; no vibrator manager."); + return; + } + mVibratorManager.cancel(usageFilter); + } + /** * Tries to unregister individual {@link android.os.Vibrator.OnVibratorStateChangedListener} * that were left registered to vibrators after failures to register them to all vibrators. diff --git a/core/java/android/os/SystemVibratorManager.java b/core/java/android/os/SystemVibratorManager.java index 84a1016e3364..ba86c6f9ec1a 100644 --- a/core/java/android/os/SystemVibratorManager.java +++ b/core/java/android/os/SystemVibratorManager.java @@ -146,12 +146,21 @@ public class SystemVibratorManager extends VibratorManager { @Override public void cancel() { + cancelVibration(/* usageFilter= */ -1); + } + + @Override + public void cancel(int usageFilter) { + cancelVibration(usageFilter); + } + + private void cancelVibration(int usageFilter) { if (mService == null) { Log.w(TAG, "Failed to cancel vibration; no vibrator manager service."); return; } try { - mService.cancelVibrate(mToken); + mService.cancelVibrate(usageFilter, mToken); } catch (RemoteException e) { Log.w(TAG, "Failed to cancel vibration.", e); } @@ -232,54 +241,32 @@ public class SystemVibratorManager extends VibratorManager { @Override public boolean setAlwaysOnEffect(int uid, String opPkg, int alwaysOnId, @Nullable VibrationEffect effect, @Nullable AudioAttributes attributes) { - if (mService == null) { - Log.w(TAG, "Failed to set always-on effect on vibrator " + mVibratorInfo.getId() - + "; no vibrator manager service."); - return false; - } - try { - VibrationAttributes attr = new VibrationAttributes.Builder( - attributes, effect).build(); - CombinedVibration combined = CombinedVibration.startParallel() - .addVibrator(mVibratorInfo.getId(), effect) - .combine(); - return mService.setAlwaysOnEffect(uid, opPkg, alwaysOnId, combined, attr); - } catch (RemoteException e) { - Log.w(TAG, "Failed to set always-on effect on vibrator " + mVibratorInfo.getId()); - } - return false; + VibrationAttributes attr = new VibrationAttributes.Builder( + attributes, effect).build(); + CombinedVibration combined = CombinedVibration.startParallel() + .addVibrator(mVibratorInfo.getId(), effect) + .combine(); + return SystemVibratorManager.this.setAlwaysOnEffect(uid, opPkg, alwaysOnId, combined, + attr); } @Override public void vibrate(int uid, String opPkg, @NonNull VibrationEffect vibe, String reason, @NonNull VibrationAttributes attributes) { - if (mService == null) { - Log.w(TAG, "Failed to vibrate on vibrator " + mVibratorInfo.getId() - + "; no vibrator manager service."); - return; - } - try { - CombinedVibration combined = CombinedVibration.startParallel() - .addVibrator(mVibratorInfo.getId(), vibe) - .combine(); - mService.vibrate(uid, opPkg, combined, attributes, reason, mToken); - } catch (RemoteException e) { - Log.w(TAG, "Failed to vibrate.", e); - } + CombinedVibration combined = CombinedVibration.startParallel() + .addVibrator(mVibratorInfo.getId(), vibe) + .combine(); + SystemVibratorManager.this.vibrate(uid, opPkg, combined, reason, attributes); } @Override public void cancel() { - if (mService == null) { - Log.w(TAG, "Failed to cancel vibration on vibrator " + mVibratorInfo.getId() - + "; no vibrator manager service."); - return; - } - try { - mService.cancelVibrate(mToken); - } catch (RemoteException e) { - Log.w(TAG, "Failed to cancel vibration on vibrator " + mVibratorInfo.getId(), e); - } + SystemVibratorManager.this.cancel(); + } + + @Override + public void cancel(int usageFilter) { + SystemVibratorManager.this.cancel(usageFilter); } @Override diff --git a/core/java/android/os/Vibrator.java b/core/java/android/os/Vibrator.java index a0f70c8fa526..54cb83f7caf1 100644 --- a/core/java/android/os/Vibrator.java +++ b/core/java/android/os/Vibrator.java @@ -494,6 +494,16 @@ public abstract class Vibrator { public abstract void cancel(); /** + * Cancel specific types of ongoing vibrations. + * + * @param usageFilter The type of vibration to be cancelled, represented as a bitwise + * combination of {@link VibrationAttributes.Usage} values. + * @hide + */ + @RequiresPermission(android.Manifest.permission.VIBRATE) + public abstract void cancel(int usageFilter); + + /** * Check whether the vibrator is vibrating. * * @return True if the hardware is vibrating, otherwise false. diff --git a/core/java/android/os/VibratorManager.java b/core/java/android/os/VibratorManager.java index 7c911160dfa6..01cece39b922 100644 --- a/core/java/android/os/VibratorManager.java +++ b/core/java/android/os/VibratorManager.java @@ -136,4 +136,14 @@ public abstract class VibratorManager { */ @RequiresPermission(android.Manifest.permission.VIBRATE) public abstract void cancel(); + + /** + * Cancel specific types of ongoing vibrations. + * + * @param usageFilter The type of vibration to be cancelled, represented as a bitwise + * combination of {@link VibrationAttributes.Usage} values. + * @hide + */ + @RequiresPermission(android.Manifest.permission.VIBRATE) + public abstract void cancel(int usageFilter); } |
