Merge "Rename CombinedVibrationEffect to CombinedVibration" into sc-dev
This commit is contained in:
@@ -10669,7 +10669,7 @@ package android.content {
|
||||
field public static final String USB_SERVICE = "usb";
|
||||
field public static final String USER_SERVICE = "user";
|
||||
field public static final String VIBRATOR_MANAGER_SERVICE = "vibrator_manager";
|
||||
field public static final String VIBRATOR_SERVICE = "vibrator";
|
||||
field @Deprecated public static final String VIBRATOR_SERVICE = "vibrator";
|
||||
field public static final String VPN_MANAGEMENT_SERVICE = "vpn_management";
|
||||
field @UiContext public static final String WALLPAPER_SERVICE = "wallpaper";
|
||||
field public static final String WIFI_AWARE_SERVICE = "wifiaware";
|
||||
@@ -30835,16 +30835,16 @@ package android.os {
|
||||
method public void onCancel();
|
||||
}
|
||||
|
||||
public abstract class CombinedVibrationEffect implements android.os.Parcelable {
|
||||
method @NonNull public static android.os.CombinedVibrationEffect createSynced(@NonNull android.os.VibrationEffect);
|
||||
public abstract class CombinedVibration implements android.os.Parcelable {
|
||||
method @NonNull public static android.os.CombinedVibration createParallel(@NonNull android.os.VibrationEffect);
|
||||
method public int describeContents();
|
||||
method @NonNull public static android.os.CombinedVibrationEffect.SyncedCombination startSynced();
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.os.CombinedVibrationEffect> CREATOR;
|
||||
method @NonNull public static android.os.CombinedVibration.ParallelCombination startParallel();
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.os.CombinedVibration> CREATOR;
|
||||
}
|
||||
|
||||
public static final class CombinedVibrationEffect.SyncedCombination {
|
||||
method @NonNull public android.os.CombinedVibrationEffect.SyncedCombination addVibrator(int, @NonNull android.os.VibrationEffect);
|
||||
method @NonNull public android.os.CombinedVibrationEffect combine();
|
||||
public static final class CombinedVibration.ParallelCombination {
|
||||
method @NonNull public android.os.CombinedVibration.ParallelCombination addVibrator(int, @NonNull android.os.VibrationEffect);
|
||||
method @NonNull public android.os.CombinedVibration combine();
|
||||
}
|
||||
|
||||
public class ConditionVariable {
|
||||
@@ -32097,8 +32097,8 @@ package android.os {
|
||||
method @NonNull public abstract android.os.Vibrator getDefaultVibrator();
|
||||
method @NonNull public abstract android.os.Vibrator getVibrator(int);
|
||||
method @NonNull public abstract int[] getVibratorIds();
|
||||
method @RequiresPermission(android.Manifest.permission.VIBRATE) public final void vibrate(@NonNull android.os.CombinedVibrationEffect);
|
||||
method @RequiresPermission(android.Manifest.permission.VIBRATE) public final void vibrate(@NonNull android.os.CombinedVibrationEffect, @Nullable android.os.VibrationAttributes);
|
||||
method @RequiresPermission(android.Manifest.permission.VIBRATE) public final void vibrate(@NonNull android.os.CombinedVibration);
|
||||
method @RequiresPermission(android.Manifest.permission.VIBRATE) public final void vibrate(@NonNull android.os.CombinedVibration, @Nullable android.os.VibrationAttributes);
|
||||
}
|
||||
|
||||
public class WorkSource implements android.os.Parcelable {
|
||||
@@ -47138,7 +47138,7 @@ package android.view {
|
||||
method @NonNull public android.hardware.SensorManager getSensorManager();
|
||||
method public int getSources();
|
||||
method public int getVendorId();
|
||||
method public android.os.Vibrator getVibrator();
|
||||
method @Deprecated public android.os.Vibrator getVibrator();
|
||||
method @NonNull public android.os.VibratorManager getVibratorManager();
|
||||
method public boolean[] hasKeys(int...);
|
||||
method public boolean hasMicrophone();
|
||||
|
||||
@@ -1597,39 +1597,39 @@ package android.os {
|
||||
field public static final int RESOURCES_SDK_INT;
|
||||
}
|
||||
|
||||
public abstract class CombinedVibrationEffect implements android.os.Parcelable {
|
||||
public abstract class CombinedVibration implements android.os.Parcelable {
|
||||
method public abstract long getDuration();
|
||||
method @NonNull public static android.os.CombinedVibrationEffect.SequentialCombination startSequential();
|
||||
method @NonNull public static android.os.CombinedVibration.SequentialCombination startSequential();
|
||||
}
|
||||
|
||||
public static final class CombinedVibrationEffect.Mono extends android.os.CombinedVibrationEffect {
|
||||
public static final class CombinedVibration.Mono extends android.os.CombinedVibration {
|
||||
method public long getDuration();
|
||||
method @NonNull public android.os.VibrationEffect getEffect();
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.os.CombinedVibrationEffect.Mono> CREATOR;
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.os.CombinedVibration.Mono> CREATOR;
|
||||
}
|
||||
|
||||
public static final class CombinedVibrationEffect.Sequential extends android.os.CombinedVibrationEffect {
|
||||
public static final class CombinedVibration.Sequential extends android.os.CombinedVibration {
|
||||
method @NonNull public java.util.List<java.lang.Integer> getDelays();
|
||||
method public long getDuration();
|
||||
method @NonNull public java.util.List<android.os.CombinedVibrationEffect> getEffects();
|
||||
method @NonNull public java.util.List<android.os.CombinedVibration> getEffects();
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.os.CombinedVibrationEffect.Sequential> CREATOR;
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.os.CombinedVibration.Sequential> CREATOR;
|
||||
}
|
||||
|
||||
public static final class CombinedVibrationEffect.SequentialCombination {
|
||||
method @NonNull public android.os.CombinedVibrationEffect.SequentialCombination addNext(int, @NonNull android.os.VibrationEffect);
|
||||
method @NonNull public android.os.CombinedVibrationEffect.SequentialCombination addNext(int, @NonNull android.os.VibrationEffect, int);
|
||||
method @NonNull public android.os.CombinedVibrationEffect.SequentialCombination addNext(@NonNull android.os.CombinedVibrationEffect);
|
||||
method @NonNull public android.os.CombinedVibrationEffect.SequentialCombination addNext(@NonNull android.os.CombinedVibrationEffect, int);
|
||||
method @NonNull public android.os.CombinedVibrationEffect combine();
|
||||
public static final class CombinedVibration.SequentialCombination {
|
||||
method @NonNull public android.os.CombinedVibration.SequentialCombination addNext(int, @NonNull android.os.VibrationEffect);
|
||||
method @NonNull public android.os.CombinedVibration.SequentialCombination addNext(int, @NonNull android.os.VibrationEffect, int);
|
||||
method @NonNull public android.os.CombinedVibration.SequentialCombination addNext(@NonNull android.os.CombinedVibration);
|
||||
method @NonNull public android.os.CombinedVibration.SequentialCombination addNext(@NonNull android.os.CombinedVibration, int);
|
||||
method @NonNull public android.os.CombinedVibration combine();
|
||||
}
|
||||
|
||||
public static final class CombinedVibrationEffect.Stereo extends android.os.CombinedVibrationEffect {
|
||||
public static final class CombinedVibration.Stereo extends android.os.CombinedVibration {
|
||||
method public long getDuration();
|
||||
method @NonNull public android.util.SparseArray<android.os.VibrationEffect> getEffects();
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.os.CombinedVibrationEffect.Stereo> CREATOR;
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.os.CombinedVibration.Stereo> CREATOR;
|
||||
}
|
||||
|
||||
public class DeviceIdleManager {
|
||||
|
||||
@@ -4128,9 +4128,11 @@ public abstract class Context {
|
||||
* Use with {@link #getSystemService(String)} to retrieve a {@link android.os.Vibrator} for
|
||||
* interacting with the vibration hardware.
|
||||
*
|
||||
* @deprecated Use {@link android.os.VibratorManager} to retrieve the default system vibrator.
|
||||
* @see #getSystemService(String)
|
||||
* @see android.os.Vibrator
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String VIBRATOR_SERVICE = "vibrator";
|
||||
|
||||
/**
|
||||
|
||||
@@ -22,7 +22,7 @@ import android.hardware.input.KeyboardLayout;
|
||||
import android.hardware.input.IInputDevicesChangedListener;
|
||||
import android.hardware.input.ITabletModeChangedListener;
|
||||
import android.hardware.input.TouchCalibration;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.hardware.input.IInputSensorEventListener;
|
||||
import android.hardware.input.InputSensorInfo;
|
||||
import android.hardware.lights.Light;
|
||||
@@ -91,7 +91,7 @@ interface IInputManager {
|
||||
|
||||
// Input device vibrator control.
|
||||
void vibrate(int deviceId, in VibrationEffect effect, IBinder token);
|
||||
void vibrateCombined(int deviceId, in CombinedVibrationEffect effect, IBinder token);
|
||||
void vibrateCombined(int deviceId, in CombinedVibration vibration, IBinder token);
|
||||
void cancelVibrate(int deviceId, IBinder token);
|
||||
int[] getVibratorIds(int deviceId);
|
||||
boolean isVibrating(int deviceId);
|
||||
|
||||
@@ -19,7 +19,7 @@ package android.hardware.input;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.os.Binder;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.NullVibrator;
|
||||
import android.os.VibrationAttributes;
|
||||
import android.os.Vibrator;
|
||||
@@ -125,7 +125,7 @@ public class InputDeviceVibratorManager extends VibratorManager
|
||||
}
|
||||
|
||||
@Override
|
||||
public void vibrate(int uid, String opPkg, @NonNull CombinedVibrationEffect effect,
|
||||
public void vibrate(int uid, String opPkg, @NonNull CombinedVibration effect,
|
||||
String reason, @Nullable VibrationAttributes attributes) {
|
||||
mInputManager.vibrate(mDeviceId, effect, mToken);
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ import android.hardware.lights.LightsManager;
|
||||
import android.hardware.lights.LightsRequest;
|
||||
import android.os.BlockUntrustedTouchesMode;
|
||||
import android.os.Build;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.IVibratorStateListener;
|
||||
@@ -1470,7 +1470,7 @@ public final class InputManager {
|
||||
/*
|
||||
* Perform combined vibration effect
|
||||
*/
|
||||
void vibrate(int deviceId, CombinedVibrationEffect effect, IBinder token) {
|
||||
void vibrate(int deviceId, CombinedVibration effect, IBinder token) {
|
||||
try {
|
||||
mIm.vibrateCombined(deviceId, effect, token);
|
||||
} catch (RemoteException ex) {
|
||||
|
||||
@@ -16,4 +16,4 @@
|
||||
|
||||
package android.os;
|
||||
|
||||
parcelable CombinedVibrationEffect;
|
||||
parcelable CombinedVibration;
|
||||
@@ -27,56 +27,61 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* A CombinedVibrationEffect describes a haptic effect to be performed by one or more {@link
|
||||
* Vibrator Vibrators}.
|
||||
* A CombinedVibration describes a combination of haptic effects to be performed by one or more
|
||||
* {@link Vibrator Vibrators}.
|
||||
*
|
||||
* These effects may be any number of things, from single shot vibrations to complex waveforms.
|
||||
*
|
||||
* @see VibrationEffect
|
||||
*/
|
||||
@SuppressWarnings({"ParcelNotFinal", "ParcelCreator"}) // Parcel only extended here.
|
||||
public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
public abstract class CombinedVibration implements Parcelable {
|
||||
private static final int PARCEL_TOKEN_MONO = 1;
|
||||
private static final int PARCEL_TOKEN_STEREO = 2;
|
||||
private static final int PARCEL_TOKEN_SEQUENTIAL = 3;
|
||||
|
||||
/** Prevent subclassing from outside of the framework. */
|
||||
CombinedVibrationEffect() {
|
||||
CombinedVibration() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a synced vibration effect.
|
||||
* Create a vibration that plays a single effect in parallel on all vibrators.
|
||||
*
|
||||
* A synced vibration effect should be performed by multiple vibrators at the same time.
|
||||
* A parallel vibration that takes a single {@link VibrationEffect} to be performed by multiple
|
||||
* vibrators at the same time.
|
||||
*
|
||||
* @param effect The {@link VibrationEffect} to perform.
|
||||
* @return The synced effect.
|
||||
* @return The combined vibration representing the single effect to be played in all vibrators.
|
||||
*/
|
||||
@NonNull
|
||||
public static CombinedVibrationEffect createSynced(@NonNull VibrationEffect effect) {
|
||||
CombinedVibrationEffect combined = new Mono(effect);
|
||||
public static CombinedVibration createParallel(@NonNull VibrationEffect effect) {
|
||||
CombinedVibration combined = new Mono(effect);
|
||||
combined.validate();
|
||||
return combined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Start creating a synced vibration effect.
|
||||
* Start creating a vibration that plays effects in parallel on one or more vibrators.
|
||||
*
|
||||
* A synced vibration effect should be performed by multiple vibrators at the same time.
|
||||
* A parallel vibration takes one or more {@link VibrationEffect VibrationEffects} associated to
|
||||
* individual vibrators to be performed at the same time.
|
||||
*
|
||||
* @see CombinedVibrationEffect.SyncedCombination
|
||||
* @see CombinedVibration.ParallelCombination
|
||||
*/
|
||||
@NonNull
|
||||
public static SyncedCombination startSynced() {
|
||||
return new SyncedCombination();
|
||||
public static ParallelCombination startParallel() {
|
||||
return new ParallelCombination();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start creating a sequential vibration effect.
|
||||
* Start creating a vibration that plays effects in sequence on one or more vibrators.
|
||||
*
|
||||
* A sequential vibration effect should be performed by multiple vibrators in order.
|
||||
* A sequential vibration takes one or more {@link CombinedVibration CombinedVibrations} to be
|
||||
* performed by one or more vibrators in order. Each {@link CombinedVibration} starts only after
|
||||
* the previous one is finished.
|
||||
*
|
||||
* @see CombinedVibrationEffect.SequentialCombination
|
||||
* @hide
|
||||
* @see CombinedVibration.SequentialCombination
|
||||
*/
|
||||
@TestApi
|
||||
@NonNull
|
||||
@@ -92,7 +97,7 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
/**
|
||||
* Gets the estimated duration of the combined vibration in milliseconds.
|
||||
*
|
||||
* <p>For synced combinations this means the maximum duration of any individual {@link
|
||||
* <p>For parallel combinations this means the maximum duration of any individual {@link
|
||||
* VibrationEffect}. For sequential combinations, this is a sum of each step and delays.
|
||||
*
|
||||
* <p>For combinations of effects without a defined end (e.g. a Waveform with a non-negative
|
||||
@@ -112,15 +117,15 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
public abstract boolean hasVibrator(int vibratorId);
|
||||
|
||||
/**
|
||||
* A combination of haptic effects that should be played in multiple vibrators in sync.
|
||||
* A combination of haptic effects that should be played in multiple vibrators in parallel.
|
||||
*
|
||||
* @see CombinedVibrationEffect#startSynced()
|
||||
* @see CombinedVibration#startParallel()
|
||||
*/
|
||||
public static final class SyncedCombination {
|
||||
public static final class ParallelCombination {
|
||||
|
||||
private final SparseArray<VibrationEffect> mEffects = new SparseArray<>();
|
||||
|
||||
SyncedCombination() {
|
||||
ParallelCombination() {
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -128,33 +133,33 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
*
|
||||
* @param vibratorId The id of the vibrator that should perform this effect.
|
||||
* @param effect The effect this vibrator should play.
|
||||
* @return The {@link CombinedVibrationEffect.SyncedCombination} object to enable adding
|
||||
* @return The {@link ParallelCombination} object to enable adding
|
||||
* multiple effects in one chain.
|
||||
* @see VibrationEffect#createOneShot(long, int)
|
||||
*/
|
||||
@NonNull
|
||||
public SyncedCombination addVibrator(int vibratorId, @NonNull VibrationEffect effect) {
|
||||
public ParallelCombination addVibrator(int vibratorId, @NonNull VibrationEffect effect) {
|
||||
mEffects.put(vibratorId, effect);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Combine all of the added effects into a combined effect.
|
||||
* Combine all of the added effects into a {@link CombinedVibration}.
|
||||
*
|
||||
* The {@link CombinedVibrationEffect.SyncedCombination} object is still valid after this
|
||||
* The {@link ParallelCombination} object is still valid after this
|
||||
* call, so you can continue adding more effects to it and generating more
|
||||
* {@link CombinedVibrationEffect}s by calling this method again.
|
||||
* {@link CombinedVibration}s by calling this method again.
|
||||
*
|
||||
* @return The {@link CombinedVibrationEffect} resulting from combining the added effects to
|
||||
* be played in sync.
|
||||
* @return The {@link CombinedVibration} resulting from combining the added effects to
|
||||
* be played in parallel.
|
||||
*/
|
||||
@NonNull
|
||||
public CombinedVibrationEffect combine() {
|
||||
public CombinedVibration combine() {
|
||||
if (mEffects.size() == 0) {
|
||||
throw new IllegalStateException(
|
||||
"Combination must have at least one element to combine.");
|
||||
}
|
||||
CombinedVibrationEffect combined = new Stereo(mEffects);
|
||||
CombinedVibration combined = new Stereo(mEffects);
|
||||
combined.validate();
|
||||
return combined;
|
||||
}
|
||||
@@ -163,13 +168,13 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
/**
|
||||
* A combination of haptic effects that should be played in multiple vibrators in sequence.
|
||||
*
|
||||
* @see CombinedVibrationEffect#startSequential()
|
||||
* @hide
|
||||
* @see CombinedVibration#startSequential()
|
||||
*/
|
||||
@TestApi
|
||||
public static final class SequentialCombination {
|
||||
|
||||
private final ArrayList<CombinedVibrationEffect> mEffects = new ArrayList<>();
|
||||
private final ArrayList<CombinedVibration> mEffects = new ArrayList<>();
|
||||
private final ArrayList<Integer> mDelays = new ArrayList<>();
|
||||
|
||||
SequentialCombination() {
|
||||
@@ -178,11 +183,12 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
/**
|
||||
* Add a single vibration effect to be performed next.
|
||||
*
|
||||
* Similar to {@link #addNext(int, VibrationEffect, int)}, but with no delay.
|
||||
* Similar to {@link #addNext(int, VibrationEffect, int)}, but with no delay. The effect
|
||||
* will start playing immediately after the previous vibration is finished.
|
||||
*
|
||||
* @param vibratorId The id of the vibrator that should perform this effect.
|
||||
* @param effect The effect this vibrator should play.
|
||||
* @return The {@link CombinedVibrationEffect.SequentialCombination} object to enable adding
|
||||
* @return The {@link CombinedVibration.SequentialCombination} object to enable adding
|
||||
* multiple effects in one chain.
|
||||
*/
|
||||
@NonNull
|
||||
@@ -193,47 +199,56 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
/**
|
||||
* Add a single vibration effect to be performed next.
|
||||
*
|
||||
* The delay is applied immediately after the previous vibration is finished. The effect
|
||||
* will start playing after the delay.
|
||||
*
|
||||
* @param vibratorId The id of the vibrator that should perform this effect.
|
||||
* @param effect The effect this vibrator should play.
|
||||
* @param delay The amount of time, in milliseconds, to wait between playing the prior
|
||||
* effect and this one.
|
||||
* @return The {@link CombinedVibrationEffect.SequentialCombination} object to enable adding
|
||||
* vibration and this one, starting at the time the previous vibration in
|
||||
* this sequence is finished.
|
||||
* @return The {@link CombinedVibration.SequentialCombination} object to enable adding
|
||||
* multiple effects in one chain.
|
||||
*/
|
||||
@NonNull
|
||||
public SequentialCombination addNext(int vibratorId, @NonNull VibrationEffect effect,
|
||||
int delay) {
|
||||
return addNext(
|
||||
CombinedVibrationEffect.startSynced().addVibrator(vibratorId, effect).combine(),
|
||||
CombinedVibration.startParallel().addVibrator(vibratorId, effect).combine(),
|
||||
delay);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a combined vibration effect to be performed next.
|
||||
*
|
||||
* Similar to {@link #addNext(CombinedVibrationEffect, int)}, but with no delay.
|
||||
* Similar to {@link #addNext(CombinedVibration, int)}, but with no delay. The effect will
|
||||
* start playing immediately after the previous vibration is finished.
|
||||
*
|
||||
* @param effect The combined effect to be performed next.
|
||||
* @return The {@link CombinedVibrationEffect.SequentialCombination} object to enable adding
|
||||
* @return The {@link CombinedVibration.SequentialCombination} object to enable adding
|
||||
* multiple effects in one chain.
|
||||
* @see VibrationEffect#createOneShot(long, int)
|
||||
*/
|
||||
@NonNull
|
||||
public SequentialCombination addNext(@NonNull CombinedVibrationEffect effect) {
|
||||
public SequentialCombination addNext(@NonNull CombinedVibration effect) {
|
||||
return addNext(effect, /* delay= */ 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a one shot vibration effect to be performed by the specified vibrator.
|
||||
* Add a combined vibration effect to be performed next.
|
||||
*
|
||||
* The delay is applied immediately after the previous vibration is finished. The vibration
|
||||
* will start playing after the delay.
|
||||
*
|
||||
* @param effect The combined effect to be performed next.
|
||||
* @param delay The amount of time, in milliseconds, to wait between playing the prior
|
||||
* effect and this one.
|
||||
* @return The {@link CombinedVibrationEffect.SequentialCombination} object to enable adding
|
||||
* vibration and this one, starting at the time the previous vibration in this
|
||||
* sequence is finished.
|
||||
* @return The {@link CombinedVibration.SequentialCombination} object to enable adding
|
||||
* multiple effects in one chain.
|
||||
*/
|
||||
@NonNull
|
||||
public SequentialCombination addNext(@NonNull CombinedVibrationEffect effect, int delay) {
|
||||
public SequentialCombination addNext(@NonNull CombinedVibration effect, int delay) {
|
||||
if (effect instanceof Sequential) {
|
||||
Sequential sequentialEffect = (Sequential) effect;
|
||||
int firstEffectIndex = mDelays.size();
|
||||
@@ -250,32 +265,33 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
/**
|
||||
* Combine all of the added effects in sequence.
|
||||
*
|
||||
* The {@link CombinedVibrationEffect.SequentialCombination} object is still valid after
|
||||
* The {@link CombinedVibration.SequentialCombination} object is still valid after
|
||||
* this call, so you can continue adding more effects to it and generating more {@link
|
||||
* CombinedVibrationEffect}s by calling this method again.
|
||||
* CombinedVibration}s by calling this method again.
|
||||
*
|
||||
* @return The {@link CombinedVibrationEffect} resulting from combining the added effects to
|
||||
* @return The {@link CombinedVibration} resulting from combining the added effects to
|
||||
* be played in sequence.
|
||||
*/
|
||||
@NonNull
|
||||
public CombinedVibrationEffect combine() {
|
||||
public CombinedVibration combine() {
|
||||
if (mEffects.size() == 0) {
|
||||
throw new IllegalStateException(
|
||||
"Combination must have at least one element to combine.");
|
||||
}
|
||||
CombinedVibrationEffect combined = new Sequential(mEffects, mDelays);
|
||||
CombinedVibration combined = new Sequential(mEffects, mDelays);
|
||||
combined.validate();
|
||||
return combined;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a single {@link VibrationEffect} that should be executed in all vibrators in sync.
|
||||
* Represents a single {@link VibrationEffect} that should be played in all vibrators at the
|
||||
* same time.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
public static final class Mono extends CombinedVibrationEffect {
|
||||
public static final class Mono extends CombinedVibration {
|
||||
private final VibrationEffect mEffect;
|
||||
|
||||
Mono(Parcel in) {
|
||||
@@ -357,12 +373,13 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a list of {@link VibrationEffect}s that should be executed in sync.
|
||||
* Represents a set of {@link VibrationEffect VibrationEffects} associated to individual
|
||||
* vibrators that should be played at the same time.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
public static final class Stereo extends CombinedVibrationEffect {
|
||||
public static final class Stereo extends CombinedVibration {
|
||||
|
||||
/** Mapping vibrator ids to effects. */
|
||||
private final SparseArray<VibrationEffect> mEffects;
|
||||
@@ -383,7 +400,7 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
}
|
||||
}
|
||||
|
||||
/** Effects to be performed in sync, where each key represents the vibrator id. */
|
||||
/** Effects to be performed in parallel, where each key represents the vibrator id. */
|
||||
@NonNull
|
||||
public SparseArray<VibrationEffect> getEffects() {
|
||||
return mEffects;
|
||||
@@ -489,13 +506,14 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a list of {@link VibrationEffect}s that should be executed in sequence.
|
||||
* Represents a list of {@link CombinedVibration CombinedVibrations} that should be played in
|
||||
* sequence.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
public static final class Sequential extends CombinedVibrationEffect {
|
||||
private final List<CombinedVibrationEffect> mEffects;
|
||||
public static final class Sequential extends CombinedVibration {
|
||||
private final List<CombinedVibration> mEffects;
|
||||
private final List<Integer> mDelays;
|
||||
|
||||
Sequential(Parcel in) {
|
||||
@@ -504,11 +522,11 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
mDelays = new ArrayList<>(size);
|
||||
for (int i = 0; i < size; i++) {
|
||||
mDelays.add(in.readInt());
|
||||
mEffects.add(CombinedVibrationEffect.CREATOR.createFromParcel(in));
|
||||
mEffects.add(CombinedVibration.CREATOR.createFromParcel(in));
|
||||
}
|
||||
}
|
||||
|
||||
Sequential(@NonNull List<CombinedVibrationEffect> effects,
|
||||
Sequential(@NonNull List<CombinedVibration> effects,
|
||||
@NonNull List<Integer> delays) {
|
||||
mEffects = new ArrayList<>(effects);
|
||||
mDelays = new ArrayList<>(delays);
|
||||
@@ -516,7 +534,7 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
|
||||
/** Effects to be performed in sequence. */
|
||||
@NonNull
|
||||
public List<CombinedVibrationEffect> getEffects() {
|
||||
public List<CombinedVibration> getEffects() {
|
||||
return mEffects;
|
||||
}
|
||||
|
||||
@@ -532,7 +550,7 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
long durations = 0;
|
||||
final int effectCount = mEffects.size();
|
||||
for (int i = 0; i < effectCount; i++) {
|
||||
CombinedVibrationEffect effect = mEffects.get(i);
|
||||
CombinedVibration effect = mEffects.get(i);
|
||||
long duration = effect.getDuration();
|
||||
if (duration == Long.MAX_VALUE) {
|
||||
// If any duration is repeating, this combination duration is also repeating.
|
||||
@@ -570,7 +588,7 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < effectCount; i++) {
|
||||
CombinedVibrationEffect effect = mEffects.get(i);
|
||||
CombinedVibration effect = mEffects.get(i);
|
||||
if (effect instanceof Sequential) {
|
||||
throw new IllegalArgumentException(
|
||||
"There should be no nested sequential effects in a combined effect");
|
||||
@@ -644,10 +662,10 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static final Parcelable.Creator<CombinedVibrationEffect> CREATOR =
|
||||
new Parcelable.Creator<CombinedVibrationEffect>() {
|
||||
public static final Parcelable.Creator<CombinedVibration> CREATOR =
|
||||
new Parcelable.Creator<CombinedVibration>() {
|
||||
@Override
|
||||
public CombinedVibrationEffect createFromParcel(Parcel in) {
|
||||
public CombinedVibration createFromParcel(Parcel in) {
|
||||
int token = in.readInt();
|
||||
if (token == PARCEL_TOKEN_MONO) {
|
||||
return new Mono(in);
|
||||
@@ -662,8 +680,8 @@ public abstract class CombinedVibrationEffect implements Parcelable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CombinedVibrationEffect[] newArray(int size) {
|
||||
return new CombinedVibrationEffect[size];
|
||||
public CombinedVibration[] newArray(int size) {
|
||||
return new CombinedVibration[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
package android.os;
|
||||
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.IVibratorStateListener;
|
||||
import android.os.VibrationAttributes;
|
||||
import android.os.VibratorInfo;
|
||||
@@ -29,8 +29,8 @@ interface IVibratorManagerService {
|
||||
boolean registerVibratorStateListener(int vibratorId, in IVibratorStateListener listener);
|
||||
boolean unregisterVibratorStateListener(int vibratorId, in IVibratorStateListener listener);
|
||||
boolean setAlwaysOnEffect(int uid, String opPkg, int alwaysOnId,
|
||||
in CombinedVibrationEffect effect, in VibrationAttributes attributes);
|
||||
void vibrate(int uid, String opPkg, in CombinedVibrationEffect effect,
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ public class SystemVibrator extends Vibrator {
|
||||
return false;
|
||||
}
|
||||
VibrationAttributes attr = new VibrationAttributes.Builder(attributes, effect).build();
|
||||
CombinedVibrationEffect combinedEffect = CombinedVibrationEffect.createSynced(effect);
|
||||
CombinedVibration combinedEffect = CombinedVibration.createParallel(effect);
|
||||
return mVibratorManager.setAlwaysOnEffect(uid, opPkg, alwaysOnId, combinedEffect, attr);
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ public class SystemVibrator extends Vibrator {
|
||||
Log.w(TAG, "Failed to vibrate; no vibrator manager.");
|
||||
return;
|
||||
}
|
||||
CombinedVibrationEffect combinedEffect = CombinedVibrationEffect.createSynced(effect);
|
||||
CombinedVibration combinedEffect = CombinedVibration.createParallel(effect);
|
||||
mVibratorManager.vibrate(uid, opPkg, combinedEffect, reason, attributes);
|
||||
}
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ public class SystemVibratorManager extends VibratorManager {
|
||||
|
||||
@Override
|
||||
public boolean setAlwaysOnEffect(int uid, String opPkg, int alwaysOnId,
|
||||
@Nullable CombinedVibrationEffect effect, @Nullable VibrationAttributes attributes) {
|
||||
@Nullable CombinedVibration effect, @Nullable VibrationAttributes attributes) {
|
||||
if (mService == null) {
|
||||
Log.w(TAG, "Failed to set always-on effect; no vibrator manager service.");
|
||||
return false;
|
||||
@@ -131,7 +131,7 @@ public class SystemVibratorManager extends VibratorManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void vibrate(int uid, String opPkg, @NonNull CombinedVibrationEffect effect,
|
||||
public void vibrate(int uid, String opPkg, @NonNull CombinedVibration effect,
|
||||
String reason, @Nullable VibrationAttributes attributes) {
|
||||
if (mService == null) {
|
||||
Log.w(TAG, "Failed to vibrate; no vibrator manager service.");
|
||||
@@ -240,7 +240,7 @@ public class SystemVibratorManager extends VibratorManager {
|
||||
try {
|
||||
VibrationAttributes attr = new VibrationAttributes.Builder(
|
||||
attributes, effect).build();
|
||||
CombinedVibrationEffect combined = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration combined = CombinedVibration.startParallel()
|
||||
.addVibrator(mVibratorInfo.getId(), effect)
|
||||
.combine();
|
||||
return mService.setAlwaysOnEffect(uid, opPkg, alwaysOnId, combined, attr);
|
||||
@@ -259,7 +259,7 @@ public class SystemVibratorManager extends VibratorManager {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
CombinedVibrationEffect combined = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration combined = CombinedVibration.startParallel()
|
||||
.addVibrator(mVibratorInfo.getId(), vibe)
|
||||
.combine();
|
||||
mService.vibrate(uid, opPkg, combined, attributes, reason, mToken);
|
||||
|
||||
@@ -69,7 +69,7 @@ public abstract class VibratorManager {
|
||||
public abstract Vibrator getVibrator(int vibratorId);
|
||||
|
||||
/**
|
||||
* Returns the system default Vibrator service.
|
||||
* Returns the default Vibrator for the device.
|
||||
*/
|
||||
@NonNull
|
||||
public abstract Vibrator getDefaultVibrator();
|
||||
@@ -81,7 +81,7 @@ public abstract class VibratorManager {
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.VIBRATE_ALWAYS_ON)
|
||||
public boolean setAlwaysOnEffect(int uid, String opPkg, int alwaysOnId,
|
||||
@Nullable CombinedVibrationEffect effect, @Nullable VibrationAttributes attributes) {
|
||||
@Nullable CombinedVibration effect, @Nullable VibrationAttributes attributes) {
|
||||
Log.w(TAG, "Always-on effects aren't supported");
|
||||
return false;
|
||||
}
|
||||
@@ -90,14 +90,14 @@ public abstract class VibratorManager {
|
||||
* Vibrate with a given combination of effects.
|
||||
*
|
||||
* <p>
|
||||
* Pass in a {@link CombinedVibrationEffect} representing a combination of {@link
|
||||
* Pass in a {@link CombinedVibration} representing a combination of {@link
|
||||
* VibrationEffect VibrationEffects} to be played on one or more vibrators.
|
||||
* </p>
|
||||
*
|
||||
* @param effect a combination of effects to be performed by one or more vibrators.
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.VIBRATE)
|
||||
public final void vibrate(@NonNull CombinedVibrationEffect effect) {
|
||||
public final void vibrate(@NonNull CombinedVibration effect) {
|
||||
vibrate(effect, null);
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ public abstract class VibratorManager {
|
||||
* Vibrate with a given combination of effects.
|
||||
*
|
||||
* <p>
|
||||
* Pass in a {@link CombinedVibrationEffect} representing a combination of {@link
|
||||
* Pass in a {@link CombinedVibration} representing a combination of {@link
|
||||
* VibrationEffect} to be played on one or more vibrators.
|
||||
* </p>
|
||||
*
|
||||
@@ -116,19 +116,19 @@ public abstract class VibratorManager {
|
||||
* incoming calls.
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.VIBRATE)
|
||||
public final void vibrate(@NonNull CombinedVibrationEffect effect,
|
||||
public final void vibrate(@NonNull CombinedVibration effect,
|
||||
@Nullable VibrationAttributes attributes) {
|
||||
vibrate(Process.myUid(), mPackageName, effect, null, attributes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Like {@link #vibrate(CombinedVibrationEffect, VibrationAttributes)}, but allows the
|
||||
* Like {@link #vibrate(CombinedVibration, VibrationAttributes)}, but allows the
|
||||
* caller to specify the vibration is owned by someone else and set reason for vibration.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.VIBRATE)
|
||||
public abstract void vibrate(int uid, String opPkg, @NonNull CombinedVibrationEffect effect,
|
||||
public abstract void vibrate(int uid, String opPkg, @NonNull CombinedVibration effect,
|
||||
String reason, @Nullable VibrationAttributes attributes);
|
||||
|
||||
/**
|
||||
|
||||
@@ -812,7 +812,9 @@ public final class InputDevice implements Parcelable {
|
||||
* {@link Context#getSystemService} with {@link Context#VIBRATOR_SERVICE} as argument.
|
||||
*
|
||||
* @return The vibrator service associated with the device, never null.
|
||||
* @deprecated Use {@link #getVibratorManager()} to retrieve the default device vibrator.
|
||||
*/
|
||||
@Deprecated
|
||||
public Vibrator getVibrator() {
|
||||
synchronized (mMotionRanges) {
|
||||
if (mVibrator == null) {
|
||||
|
||||
@@ -33,75 +33,75 @@ import java.util.Arrays;
|
||||
|
||||
@Presubmit
|
||||
@RunWith(JUnit4.class)
|
||||
public class CombinedVibrationEffectTest {
|
||||
public class CombinedVibrationTest {
|
||||
private static final VibrationEffect VALID_EFFECT = VibrationEffect.createOneShot(10, 255);
|
||||
private static final VibrationEffect INVALID_EFFECT = new VibrationEffect.Composed(
|
||||
new ArrayList<>(), 0);
|
||||
|
||||
@Test
|
||||
public void testValidateMono() {
|
||||
CombinedVibrationEffect.createSynced(VALID_EFFECT);
|
||||
CombinedVibration.createParallel(VALID_EFFECT);
|
||||
|
||||
assertThrows(IllegalArgumentException.class,
|
||||
() -> CombinedVibrationEffect.createSynced(INVALID_EFFECT));
|
||||
() -> CombinedVibration.createParallel(INVALID_EFFECT));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidateStereo() {
|
||||
CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration.startParallel()
|
||||
.addVibrator(0, VALID_EFFECT)
|
||||
.addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_TICK))
|
||||
.combine();
|
||||
CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration.startParallel()
|
||||
.addVibrator(0, INVALID_EFFECT)
|
||||
.addVibrator(0, VALID_EFFECT)
|
||||
.combine();
|
||||
|
||||
assertThrows(IllegalArgumentException.class,
|
||||
() -> CombinedVibrationEffect.startSynced()
|
||||
() -> CombinedVibration.startParallel()
|
||||
.addVibrator(0, INVALID_EFFECT)
|
||||
.combine());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidateSequential() {
|
||||
CombinedVibrationEffect.startSequential()
|
||||
CombinedVibration.startSequential()
|
||||
.addNext(0, VALID_EFFECT)
|
||||
.addNext(CombinedVibrationEffect.createSynced(VALID_EFFECT))
|
||||
.addNext(CombinedVibration.createParallel(VALID_EFFECT))
|
||||
.combine();
|
||||
CombinedVibrationEffect.startSequential()
|
||||
CombinedVibration.startSequential()
|
||||
.addNext(0, VALID_EFFECT)
|
||||
.addNext(0, VALID_EFFECT, 100)
|
||||
.combine();
|
||||
CombinedVibrationEffect.startSequential()
|
||||
.addNext(CombinedVibrationEffect.startSequential()
|
||||
CombinedVibration.startSequential()
|
||||
.addNext(CombinedVibration.startSequential()
|
||||
.addNext(0, VALID_EFFECT)
|
||||
.combine())
|
||||
.combine();
|
||||
|
||||
assertThrows(IllegalArgumentException.class,
|
||||
() -> CombinedVibrationEffect.startSequential()
|
||||
() -> CombinedVibration.startSequential()
|
||||
.addNext(0, VALID_EFFECT, -1)
|
||||
.combine());
|
||||
assertThrows(IllegalArgumentException.class,
|
||||
() -> CombinedVibrationEffect.startSequential()
|
||||
() -> CombinedVibration.startSequential()
|
||||
.addNext(0, INVALID_EFFECT)
|
||||
.combine());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNestedSequentialAccumulatesDelays() {
|
||||
CombinedVibrationEffect.Sequential combined =
|
||||
(CombinedVibrationEffect.Sequential) CombinedVibrationEffect.startSequential()
|
||||
.addNext(CombinedVibrationEffect.startSequential()
|
||||
CombinedVibration.Sequential combined =
|
||||
(CombinedVibration.Sequential) CombinedVibration.startSequential()
|
||||
.addNext(CombinedVibration.startSequential()
|
||||
.addNext(0, VALID_EFFECT, /* delay= */ 100)
|
||||
.addNext(1, VALID_EFFECT, /* delay= */ 100)
|
||||
.combine(),
|
||||
/* delay= */ 10)
|
||||
.addNext(CombinedVibrationEffect.startSequential()
|
||||
.addNext(CombinedVibration.startSequential()
|
||||
.addNext(0, VALID_EFFECT, /* delay= */ 100)
|
||||
.combine())
|
||||
.addNext(CombinedVibrationEffect.startSequential()
|
||||
.addNext(CombinedVibration.startSequential()
|
||||
.addNext(0, VALID_EFFECT)
|
||||
.addNext(0, VALID_EFFECT, /* delay= */ 100)
|
||||
.combine(),
|
||||
@@ -114,37 +114,37 @@ public class CombinedVibrationEffectTest {
|
||||
@Test
|
||||
public void testCombineEmptyFails() {
|
||||
assertThrows(IllegalStateException.class,
|
||||
() -> CombinedVibrationEffect.startSynced().combine());
|
||||
() -> CombinedVibration.startParallel().combine());
|
||||
assertThrows(IllegalStateException.class,
|
||||
() -> CombinedVibrationEffect.startSequential().combine());
|
||||
() -> CombinedVibration.startSequential().combine());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDurationMono() {
|
||||
assertEquals(1, CombinedVibrationEffect.createSynced(
|
||||
assertEquals(1, CombinedVibration.createParallel(
|
||||
VibrationEffect.createOneShot(1, 1)).getDuration());
|
||||
assertEquals(-1, CombinedVibrationEffect.createSynced(
|
||||
assertEquals(-1, CombinedVibration.createParallel(
|
||||
VibrationEffect.get(VibrationEffect.EFFECT_CLICK)).getDuration());
|
||||
assertEquals(Long.MAX_VALUE, CombinedVibrationEffect.createSynced(
|
||||
assertEquals(Long.MAX_VALUE, CombinedVibration.createParallel(
|
||||
VibrationEffect.createWaveform(
|
||||
new long[]{1, 2, 3}, new int[]{1, 2, 3}, 0)).getDuration());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDurationStereo() {
|
||||
assertEquals(6, CombinedVibrationEffect.startSynced()
|
||||
assertEquals(6, CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.createOneShot(1, 1))
|
||||
.addVibrator(2,
|
||||
VibrationEffect.createWaveform(new long[]{1, 2, 3}, new int[]{1, 2, 3}, -1))
|
||||
.combine()
|
||||
.getDuration());
|
||||
assertEquals(-1, CombinedVibrationEffect.startSynced()
|
||||
assertEquals(-1, CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addVibrator(2,
|
||||
VibrationEffect.createWaveform(new long[]{1, 2, 3}, new int[]{1, 2, 3}, -1))
|
||||
.combine()
|
||||
.getDuration());
|
||||
assertEquals(Long.MAX_VALUE, CombinedVibrationEffect.startSynced()
|
||||
assertEquals(Long.MAX_VALUE, CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addVibrator(2,
|
||||
VibrationEffect.createWaveform(new long[]{1, 2, 3}, new int[]{1, 2, 3}, 0))
|
||||
@@ -154,19 +154,19 @@ public class CombinedVibrationEffectTest {
|
||||
|
||||
@Test
|
||||
public void testDurationSequential() {
|
||||
assertEquals(26, CombinedVibrationEffect.startSequential()
|
||||
assertEquals(26, CombinedVibration.startSequential()
|
||||
.addNext(1, VibrationEffect.createOneShot(10, 10), 10)
|
||||
.addNext(2,
|
||||
VibrationEffect.createWaveform(new long[]{1, 2, 3}, new int[]{1, 2, 3}, -1))
|
||||
.combine()
|
||||
.getDuration());
|
||||
assertEquals(-1, CombinedVibrationEffect.startSequential()
|
||||
assertEquals(-1, CombinedVibration.startSequential()
|
||||
.addNext(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addNext(2,
|
||||
VibrationEffect.createWaveform(new long[]{1, 2, 3}, new int[]{1, 2, 3}, -1))
|
||||
.combine()
|
||||
.getDuration());
|
||||
assertEquals(Long.MAX_VALUE, CombinedVibrationEffect.startSequential()
|
||||
assertEquals(Long.MAX_VALUE, CombinedVibration.startSequential()
|
||||
.addNext(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addNext(2,
|
||||
VibrationEffect.createWaveform(new long[]{1, 2, 3}, new int[]{1, 2, 3}, 0))
|
||||
@@ -176,7 +176,7 @@ public class CombinedVibrationEffectTest {
|
||||
|
||||
@Test
|
||||
public void testHasVibratorMono_returnsTrueForAnyVibrator() {
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.createSynced(
|
||||
CombinedVibration effect = CombinedVibration.createParallel(
|
||||
VibrationEffect.get(VibrationEffect.EFFECT_CLICK));
|
||||
assertTrue(effect.hasVibrator(0));
|
||||
assertTrue(effect.hasVibrator(1));
|
||||
@@ -184,7 +184,7 @@ public class CombinedVibrationEffectTest {
|
||||
|
||||
@Test
|
||||
public void testHasVibratorStereo_returnsOnlyTheIdsSet() {
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.combine();
|
||||
assertFalse(effect.hasVibrator(0));
|
||||
@@ -194,9 +194,9 @@ public class CombinedVibrationEffectTest {
|
||||
|
||||
@Test
|
||||
public void testHasVibratorSequential_returnsNestedVibrators() {
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSequential()
|
||||
CombinedVibration effect = CombinedVibration.startSequential()
|
||||
.addNext(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addNext(CombinedVibrationEffect.startSynced()
|
||||
.addNext(CombinedVibration.startParallel()
|
||||
.addVibrator(2, VibrationEffect.get(VibrationEffect.EFFECT_TICK))
|
||||
.combine())
|
||||
.combine();
|
||||
@@ -207,18 +207,18 @@ public class CombinedVibrationEffectTest {
|
||||
|
||||
@Test
|
||||
public void testSerializationMono() {
|
||||
CombinedVibrationEffect original = CombinedVibrationEffect.createSynced(VALID_EFFECT);
|
||||
CombinedVibration original = CombinedVibration.createParallel(VALID_EFFECT);
|
||||
|
||||
Parcel parcel = Parcel.obtain();
|
||||
original.writeToParcel(parcel, 0);
|
||||
parcel.setDataPosition(0);
|
||||
CombinedVibrationEffect restored = CombinedVibrationEffect.CREATOR.createFromParcel(parcel);
|
||||
CombinedVibration restored = CombinedVibration.CREATOR.createFromParcel(parcel);
|
||||
assertEquals(original, restored);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSerializationStereo() {
|
||||
CombinedVibrationEffect original = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration original = CombinedVibration.startParallel()
|
||||
.addVibrator(0, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addVibrator(1, VibrationEffect.createOneShot(10, 255))
|
||||
.combine();
|
||||
@@ -226,22 +226,22 @@ public class CombinedVibrationEffectTest {
|
||||
Parcel parcel = Parcel.obtain();
|
||||
original.writeToParcel(parcel, 0);
|
||||
parcel.setDataPosition(0);
|
||||
CombinedVibrationEffect restored = CombinedVibrationEffect.CREATOR.createFromParcel(parcel);
|
||||
CombinedVibration restored = CombinedVibration.CREATOR.createFromParcel(parcel);
|
||||
assertEquals(original, restored);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSerializationSequential() {
|
||||
CombinedVibrationEffect original = CombinedVibrationEffect.startSequential()
|
||||
CombinedVibration original = CombinedVibration.startSequential()
|
||||
.addNext(0, VALID_EFFECT)
|
||||
.addNext(CombinedVibrationEffect.createSynced(VALID_EFFECT))
|
||||
.addNext(CombinedVibration.createParallel(VALID_EFFECT))
|
||||
.addNext(0, VibrationEffect.get(VibrationEffect.EFFECT_CLICK), 100)
|
||||
.combine();
|
||||
|
||||
Parcel parcel = Parcel.obtain();
|
||||
original.writeToParcel(parcel, 0);
|
||||
parcel.setDataPosition(0);
|
||||
CombinedVibrationEffect restored = CombinedVibrationEffect.CREATOR.createFromParcel(parcel);
|
||||
CombinedVibration restored = CombinedVibration.CREATOR.createFromParcel(parcel);
|
||||
assertEquals(original, restored);
|
||||
}
|
||||
}
|
||||
@@ -57,7 +57,7 @@ import android.hardware.lights.LightState;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Binder;
|
||||
import android.os.Bundle;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.Environment;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
@@ -2033,23 +2033,23 @@ public class InputManagerService extends IInputManager.Stub
|
||||
|
||||
// Binder call
|
||||
@Override
|
||||
public void vibrateCombined(int deviceId, CombinedVibrationEffect effect, IBinder token) {
|
||||
public void vibrateCombined(int deviceId, CombinedVibration effect, IBinder token) {
|
||||
VibratorToken v = getVibratorToken(deviceId, token);
|
||||
synchronized (v) {
|
||||
if (!(effect instanceof CombinedVibrationEffect.Mono)
|
||||
&& !(effect instanceof CombinedVibrationEffect.Stereo)) {
|
||||
if (!(effect instanceof CombinedVibration.Mono)
|
||||
&& !(effect instanceof CombinedVibration.Stereo)) {
|
||||
Slog.e(TAG, "Only Mono and Stereo effects are supported");
|
||||
return;
|
||||
}
|
||||
|
||||
v.mVibrating = true;
|
||||
if (effect instanceof CombinedVibrationEffect.Mono) {
|
||||
CombinedVibrationEffect.Mono mono = (CombinedVibrationEffect.Mono) effect;
|
||||
if (effect instanceof CombinedVibration.Mono) {
|
||||
CombinedVibration.Mono mono = (CombinedVibration.Mono) effect;
|
||||
VibrationInfo info = new VibrationInfo(mono.getEffect());
|
||||
nativeVibrate(mPtr, deviceId, info.getPattern(), info.getAmplitudes(),
|
||||
info.getRepeatIndex(), v.mTokenValue);
|
||||
} else if (effect instanceof CombinedVibrationEffect.Stereo) {
|
||||
CombinedVibrationEffect.Stereo stereo = (CombinedVibrationEffect.Stereo) effect;
|
||||
} else if (effect instanceof CombinedVibration.Stereo) {
|
||||
CombinedVibration.Stereo stereo = (CombinedVibration.Stereo) effect;
|
||||
SparseArray<VibrationEffect> effects = stereo.getEffects();
|
||||
long[] pattern = new long[0];
|
||||
int repeat = Integer.MIN_VALUE;
|
||||
|
||||
@@ -19,7 +19,7 @@ package com.android.server.vibrator;
|
||||
import android.annotation.Nullable;
|
||||
import android.content.Context;
|
||||
import android.hardware.input.InputManager;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.Handler;
|
||||
import android.os.VibrationAttributes;
|
||||
import android.os.VibratorManager;
|
||||
@@ -94,7 +94,7 @@ final class InputDeviceDelegate implements InputManager.InputDeviceListener {
|
||||
*
|
||||
* @return {@link #isAvailable()}
|
||||
*/
|
||||
public boolean vibrateIfAvailable(int uid, String opPkg, CombinedVibrationEffect effect,
|
||||
public boolean vibrateIfAvailable(int uid, String opPkg, CombinedVibration effect,
|
||||
String reason, VibrationAttributes attrs) {
|
||||
synchronized (mLock) {
|
||||
for (int i = 0; i < mInputDeviceVibrators.size(); i++) {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
package com.android.server.vibrator;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.IBinder;
|
||||
import android.os.SystemClock;
|
||||
import android.os.VibrationAttributes;
|
||||
@@ -72,14 +72,14 @@ final class Vibration {
|
||||
|
||||
/** The actual effect to be played. */
|
||||
@Nullable
|
||||
private CombinedVibrationEffect mEffect;
|
||||
private CombinedVibration mEffect;
|
||||
|
||||
/**
|
||||
* The original effect that was requested. Typically these two things differ because the effect
|
||||
* was scaled based on the users vibration intensity settings.
|
||||
*/
|
||||
@Nullable
|
||||
private CombinedVibrationEffect mOriginalEffect;
|
||||
private CombinedVibration mOriginalEffect;
|
||||
|
||||
/**
|
||||
* Start/end times in unix epoch time. Only to be used for debugging purposes and to correlate
|
||||
@@ -90,7 +90,7 @@ final class Vibration {
|
||||
private long mEndTimeDebug;
|
||||
private Status mStatus;
|
||||
|
||||
Vibration(IBinder token, int id, CombinedVibrationEffect effect,
|
||||
Vibration(IBinder token, int id, CombinedVibration effect,
|
||||
VibrationAttributes attrs, int uid, String opPkg, String reason) {
|
||||
this.token = token;
|
||||
this.mEffect = effect;
|
||||
@@ -142,7 +142,7 @@ final class Vibration {
|
||||
* effect added.
|
||||
*/
|
||||
public void updateEffects(Function<VibrationEffect, VibrationEffect> updateFn) {
|
||||
CombinedVibrationEffect newEffect = transformCombinedEffect(mEffect, updateFn);
|
||||
CombinedVibration newEffect = transformCombinedEffect(mEffect, updateFn);
|
||||
if (!newEffect.equals(mEffect)) {
|
||||
if (mOriginalEffect == null) {
|
||||
mOriginalEffect = mEffect;
|
||||
@@ -155,29 +155,29 @@ final class Vibration {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@link CombinedVibrationEffect} by applying the given transformation function
|
||||
* Creates a new {@link CombinedVibration} by applying the given transformation function
|
||||
* to each {@link VibrationEffect}.
|
||||
*/
|
||||
private static CombinedVibrationEffect transformCombinedEffect(
|
||||
CombinedVibrationEffect combinedEffect, Function<VibrationEffect, VibrationEffect> fn) {
|
||||
if (combinedEffect instanceof CombinedVibrationEffect.Mono) {
|
||||
VibrationEffect effect = ((CombinedVibrationEffect.Mono) combinedEffect).getEffect();
|
||||
return CombinedVibrationEffect.createSynced(fn.apply(effect));
|
||||
} else if (combinedEffect instanceof CombinedVibrationEffect.Stereo) {
|
||||
private static CombinedVibration transformCombinedEffect(
|
||||
CombinedVibration combinedEffect, Function<VibrationEffect, VibrationEffect> fn) {
|
||||
if (combinedEffect instanceof CombinedVibration.Mono) {
|
||||
VibrationEffect effect = ((CombinedVibration.Mono) combinedEffect).getEffect();
|
||||
return CombinedVibration.createParallel(fn.apply(effect));
|
||||
} else if (combinedEffect instanceof CombinedVibration.Stereo) {
|
||||
SparseArray<VibrationEffect> effects =
|
||||
((CombinedVibrationEffect.Stereo) combinedEffect).getEffects();
|
||||
CombinedVibrationEffect.SyncedCombination combination =
|
||||
CombinedVibrationEffect.startSynced();
|
||||
((CombinedVibration.Stereo) combinedEffect).getEffects();
|
||||
CombinedVibration.ParallelCombination combination =
|
||||
CombinedVibration.startParallel();
|
||||
for (int i = 0; i < effects.size(); i++) {
|
||||
combination.addVibrator(effects.keyAt(i), fn.apply(effects.valueAt(i)));
|
||||
}
|
||||
return combination.combine();
|
||||
} else if (combinedEffect instanceof CombinedVibrationEffect.Sequential) {
|
||||
List<CombinedVibrationEffect> effects =
|
||||
((CombinedVibrationEffect.Sequential) combinedEffect).getEffects();
|
||||
CombinedVibrationEffect.SequentialCombination combination =
|
||||
CombinedVibrationEffect.startSequential();
|
||||
for (CombinedVibrationEffect effect : effects) {
|
||||
} else if (combinedEffect instanceof CombinedVibration.Sequential) {
|
||||
List<CombinedVibration> effects =
|
||||
((CombinedVibration.Sequential) combinedEffect).getEffects();
|
||||
CombinedVibration.SequentialCombination combination =
|
||||
CombinedVibration.startSequential();
|
||||
for (CombinedVibration effect : effects) {
|
||||
combination.addNext(transformCombinedEffect(effect, fn));
|
||||
}
|
||||
return combination.combine();
|
||||
@@ -199,7 +199,7 @@ final class Vibration {
|
||||
|
||||
/** Return the effect that should be played by this vibration. */
|
||||
@Nullable
|
||||
public CombinedVibrationEffect getEffect() {
|
||||
public CombinedVibration getEffect() {
|
||||
return mEffect;
|
||||
}
|
||||
|
||||
@@ -214,8 +214,8 @@ final class Vibration {
|
||||
static final class DebugInfo {
|
||||
private final long mStartTimeDebug;
|
||||
private final long mEndTimeDebug;
|
||||
private final CombinedVibrationEffect mEffect;
|
||||
private final CombinedVibrationEffect mOriginalEffect;
|
||||
private final CombinedVibration mEffect;
|
||||
private final CombinedVibration mOriginalEffect;
|
||||
private final float mScale;
|
||||
private final VibrationAttributes mAttrs;
|
||||
private final int mUid;
|
||||
@@ -223,8 +223,8 @@ final class Vibration {
|
||||
private final String mReason;
|
||||
private final Status mStatus;
|
||||
|
||||
DebugInfo(long startTimeDebug, long endTimeDebug, CombinedVibrationEffect effect,
|
||||
CombinedVibrationEffect originalEffect, float scale, VibrationAttributes attrs,
|
||||
DebugInfo(long startTimeDebug, long endTimeDebug, CombinedVibration effect,
|
||||
CombinedVibration originalEffect, float scale, VibrationAttributes attrs,
|
||||
int uid, String opPkg, String reason, Status status) {
|
||||
mStartTimeDebug = startTimeDebug;
|
||||
mEndTimeDebug = endTimeDebug;
|
||||
@@ -289,24 +289,24 @@ final class Vibration {
|
||||
}
|
||||
|
||||
private void dumpEffect(
|
||||
ProtoOutputStream proto, long fieldId, CombinedVibrationEffect effect) {
|
||||
ProtoOutputStream proto, long fieldId, CombinedVibration effect) {
|
||||
dumpEffect(proto, fieldId,
|
||||
(CombinedVibrationEffect.Sequential) CombinedVibrationEffect.startSequential()
|
||||
(CombinedVibration.Sequential) CombinedVibration.startSequential()
|
||||
.addNext(effect)
|
||||
.combine());
|
||||
}
|
||||
|
||||
private void dumpEffect(
|
||||
ProtoOutputStream proto, long fieldId, CombinedVibrationEffect.Sequential effect) {
|
||||
ProtoOutputStream proto, long fieldId, CombinedVibration.Sequential effect) {
|
||||
final long token = proto.start(fieldId);
|
||||
for (int i = 0; i < effect.getEffects().size(); i++) {
|
||||
CombinedVibrationEffect nestedEffect = effect.getEffects().get(i);
|
||||
if (nestedEffect instanceof CombinedVibrationEffect.Mono) {
|
||||
CombinedVibration nestedEffect = effect.getEffects().get(i);
|
||||
if (nestedEffect instanceof CombinedVibration.Mono) {
|
||||
dumpEffect(proto, CombinedVibrationEffectProto.EFFECTS,
|
||||
(CombinedVibrationEffect.Mono) nestedEffect);
|
||||
} else if (nestedEffect instanceof CombinedVibrationEffect.Stereo) {
|
||||
(CombinedVibration.Mono) nestedEffect);
|
||||
} else if (nestedEffect instanceof CombinedVibration.Stereo) {
|
||||
dumpEffect(proto, CombinedVibrationEffectProto.EFFECTS,
|
||||
(CombinedVibrationEffect.Stereo) nestedEffect);
|
||||
(CombinedVibration.Stereo) nestedEffect);
|
||||
}
|
||||
proto.write(CombinedVibrationEffectProto.DELAYS, effect.getDelays().get(i));
|
||||
}
|
||||
@@ -314,14 +314,14 @@ final class Vibration {
|
||||
}
|
||||
|
||||
private void dumpEffect(
|
||||
ProtoOutputStream proto, long fieldId, CombinedVibrationEffect.Mono effect) {
|
||||
ProtoOutputStream proto, long fieldId, CombinedVibration.Mono effect) {
|
||||
final long token = proto.start(fieldId);
|
||||
dumpEffect(proto, SyncVibrationEffectProto.EFFECTS, effect.getEffect());
|
||||
proto.end(token);
|
||||
}
|
||||
|
||||
private void dumpEffect(
|
||||
ProtoOutputStream proto, long fieldId, CombinedVibrationEffect.Stereo effect) {
|
||||
ProtoOutputStream proto, long fieldId, CombinedVibration.Stereo effect) {
|
||||
final long token = proto.start(fieldId);
|
||||
for (int i = 0; i < effect.getEffects().size(); i++) {
|
||||
proto.write(SyncVibrationEffectProto.VIBRATOR_IDS, effect.getEffects().keyAt(i));
|
||||
|
||||
@@ -19,7 +19,7 @@ package com.android.server.vibrator;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.hardware.vibrator.IVibratorManager;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.IBinder;
|
||||
import android.os.PowerManager;
|
||||
import android.os.Process;
|
||||
@@ -112,7 +112,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
mWakeLock.setWorkSource(mWorkSource);
|
||||
mBatteryStatsService = batteryStatsService;
|
||||
|
||||
CombinedVibrationEffect effect = vib.getEffect();
|
||||
CombinedVibration effect = vib.getEffect();
|
||||
for (int i = 0; i < availableVibrators.size(); i++) {
|
||||
if (effect.hasVibrator(availableVibrators.keyAt(i))) {
|
||||
mVibrators.put(availableVibrators.keyAt(i), availableVibrators.valueAt(i));
|
||||
@@ -191,7 +191,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
private Vibration.Status playVibration() {
|
||||
Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "playVibration");
|
||||
try {
|
||||
CombinedVibrationEffect.Sequential effect = toSequential(mVibration.getEffect());
|
||||
CombinedVibration.Sequential effect = toSequential(mVibration.getEffect());
|
||||
int stepsPlayed = 0;
|
||||
|
||||
synchronized (mLock) {
|
||||
@@ -282,11 +282,11 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
return new AmplitudeStep(startTime, controller, effect, segmentIndex, vibratorOffTimeout);
|
||||
}
|
||||
|
||||
private static CombinedVibrationEffect.Sequential toSequential(CombinedVibrationEffect effect) {
|
||||
if (effect instanceof CombinedVibrationEffect.Sequential) {
|
||||
return (CombinedVibrationEffect.Sequential) effect;
|
||||
private static CombinedVibration.Sequential toSequential(CombinedVibration effect) {
|
||||
if (effect instanceof CombinedVibration.Sequential) {
|
||||
return (CombinedVibration.Sequential) effect;
|
||||
}
|
||||
return (CombinedVibrationEffect.Sequential) CombinedVibrationEffect.startSequential()
|
||||
return (CombinedVibration.Sequential) CombinedVibration.startSequential()
|
||||
.addNext(effect)
|
||||
.combine();
|
||||
}
|
||||
@@ -415,14 +415,14 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
* sequential effect isn't finished yet.
|
||||
*/
|
||||
private final class StartVibrateStep extends Step {
|
||||
public final CombinedVibrationEffect.Sequential sequentialEffect;
|
||||
public final CombinedVibration.Sequential sequentialEffect;
|
||||
public final int currentIndex;
|
||||
|
||||
StartVibrateStep(CombinedVibrationEffect.Sequential effect) {
|
||||
StartVibrateStep(CombinedVibration.Sequential effect) {
|
||||
this(SystemClock.uptimeMillis() + effect.getDelays().get(0), effect, /* index= */ 0);
|
||||
}
|
||||
|
||||
StartVibrateStep(long startTime, CombinedVibrationEffect.Sequential effect, int index) {
|
||||
StartVibrateStep(long startTime, CombinedVibration.Sequential effect, int index) {
|
||||
super(startTime);
|
||||
sequentialEffect = effect;
|
||||
currentIndex = index;
|
||||
@@ -437,7 +437,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
if (DEBUG) {
|
||||
Slog.d(TAG, "StartVibrateStep for effect #" + currentIndex);
|
||||
}
|
||||
CombinedVibrationEffect effect = sequentialEffect.getEffects().get(currentIndex);
|
||||
CombinedVibration effect = sequentialEffect.getEffects().get(currentIndex);
|
||||
DeviceEffectMap effectMapping = createEffectToVibratorMapping(effect);
|
||||
if (effectMapping == null) {
|
||||
// Unable to map effects to vibrators, ignore this step.
|
||||
@@ -481,12 +481,12 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
/** Create a mapping of individual {@link VibrationEffect} to available vibrators. */
|
||||
@Nullable
|
||||
private DeviceEffectMap createEffectToVibratorMapping(
|
||||
CombinedVibrationEffect effect) {
|
||||
if (effect instanceof CombinedVibrationEffect.Mono) {
|
||||
return new DeviceEffectMap((CombinedVibrationEffect.Mono) effect);
|
||||
CombinedVibration effect) {
|
||||
if (effect instanceof CombinedVibration.Mono) {
|
||||
return new DeviceEffectMap((CombinedVibration.Mono) effect);
|
||||
}
|
||||
if (effect instanceof CombinedVibrationEffect.Stereo) {
|
||||
return new DeviceEffectMap((CombinedVibrationEffect.Stereo) effect);
|
||||
if (effect instanceof CombinedVibration.Stereo) {
|
||||
return new DeviceEffectMap((CombinedVibration.Stereo) effect);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -494,11 +494,11 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
/**
|
||||
* Starts playing effects on designated vibrators, in sync.
|
||||
*
|
||||
* @param effectMapping The {@link CombinedVibrationEffect} mapped to this device vibrators
|
||||
* @param effectMapping The {@link CombinedVibration} mapped to this device vibrators
|
||||
* @param nextSteps An output list to accumulate the future {@link Step Steps} created
|
||||
* by this method, typically one for each vibrator that has
|
||||
* successfully started vibrating on this step.
|
||||
* @return The duration, in millis, of the {@link CombinedVibrationEffect}. Repeating
|
||||
* @return The duration, in millis, of the {@link CombinedVibration}. Repeating
|
||||
* waveforms return {@link Long#MAX_VALUE}. Zero or negative values indicate the vibrators
|
||||
* have ignored all effects.
|
||||
*/
|
||||
@@ -1041,7 +1041,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
}
|
||||
|
||||
/**
|
||||
* Map a {@link CombinedVibrationEffect} to the vibrators available on the device.
|
||||
* Map a {@link CombinedVibration} to the vibrators available on the device.
|
||||
*
|
||||
* <p>This contains the logic to find the capabilities required from {@link IVibratorManager} to
|
||||
* play all of the effects in sync.
|
||||
@@ -1051,7 +1051,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
private final int[] mVibratorIds;
|
||||
private final long mRequiredSyncCapabilities;
|
||||
|
||||
DeviceEffectMap(CombinedVibrationEffect.Mono mono) {
|
||||
DeviceEffectMap(CombinedVibration.Mono mono) {
|
||||
mVibratorEffects = new SparseArray<>(mVibrators.size());
|
||||
mVibratorIds = new int[mVibrators.size()];
|
||||
for (int i = 0; i < mVibrators.size(); i++) {
|
||||
@@ -1066,7 +1066,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
mRequiredSyncCapabilities = calculateRequiredSyncCapabilities(mVibratorEffects);
|
||||
}
|
||||
|
||||
DeviceEffectMap(CombinedVibrationEffect.Stereo stereo) {
|
||||
DeviceEffectMap(CombinedVibration.Stereo stereo) {
|
||||
SparseArray<VibrationEffect> stereoEffects = stereo.getEffects();
|
||||
mVibratorEffects = new SparseArray<>();
|
||||
for (int i = 0; i < stereoEffects.size(); i++) {
|
||||
@@ -1088,7 +1088,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the number of vibrators mapped to play the {@link CombinedVibrationEffect} on this
|
||||
* Return the number of vibrators mapped to play the {@link CombinedVibration} on this
|
||||
* device.
|
||||
*/
|
||||
public int size() {
|
||||
@@ -1096,7 +1096,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return all capabilities required to play the {@link CombinedVibrationEffect} in
|
||||
* Return all capabilities required to play the {@link CombinedVibration} in
|
||||
* between calls to {@link IVibratorManager#prepareSynced} and
|
||||
* {@link IVibratorManager#triggerSynced}.
|
||||
*/
|
||||
@@ -1104,7 +1104,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
||||
return mRequiredSyncCapabilities;
|
||||
}
|
||||
|
||||
/** Return all vibrator ids mapped to play the {@link CombinedVibrationEffect}. */
|
||||
/** Return all vibrator ids mapped to play the {@link CombinedVibration}. */
|
||||
public int[] getVibratorIds() {
|
||||
return mVibratorIds;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ import android.content.pm.PackageManagerInternal;
|
||||
import android.hardware.vibrator.IVibrator;
|
||||
import android.os.BatteryStats;
|
||||
import android.os.Binder;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.ExternalVibration;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
@@ -291,7 +291,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
|
||||
|
||||
@Override // Binder call
|
||||
public boolean setAlwaysOnEffect(int uid, String opPkg, int alwaysOnId,
|
||||
@Nullable CombinedVibrationEffect effect, @Nullable VibrationAttributes attrs) {
|
||||
@Nullable CombinedVibration effect, @Nullable VibrationAttributes attrs) {
|
||||
Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "setAlwaysOnEffect");
|
||||
try {
|
||||
mContext.enforceCallingOrSelfPermission(
|
||||
@@ -332,7 +332,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
|
||||
}
|
||||
|
||||
@Override // Binder call
|
||||
public void vibrate(int uid, String opPkg, @NonNull CombinedVibrationEffect effect,
|
||||
public void vibrate(int uid, String opPkg, @NonNull CombinedVibration effect,
|
||||
@Nullable VibrationAttributes attrs, String reason, IBinder token) {
|
||||
Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "vibrate, reason = " + reason);
|
||||
try {
|
||||
@@ -742,14 +742,14 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate the incoming {@link CombinedVibrationEffect}.
|
||||
* Validate the incoming {@link CombinedVibration}.
|
||||
*
|
||||
* We can't throw exceptions here since we might be called from some system_server component,
|
||||
* which would bring the whole system down.
|
||||
*
|
||||
* @return whether the CombinedVibrationEffect is non-null and valid
|
||||
*/
|
||||
private static boolean isEffectValid(@Nullable CombinedVibrationEffect effect) {
|
||||
private static boolean isEffectValid(@Nullable CombinedVibration effect) {
|
||||
if (effect == null) {
|
||||
Slog.wtf(TAG, "effect must not be null");
|
||||
return false;
|
||||
@@ -767,18 +767,18 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
|
||||
* Sets fallback effects to all prebaked ones in given combination of effects, based on {@link
|
||||
* VibrationSettings#getFallbackEffect}.
|
||||
*/
|
||||
private void fillVibrationFallbacks(Vibration vib, CombinedVibrationEffect effect) {
|
||||
if (effect instanceof CombinedVibrationEffect.Mono) {
|
||||
fillVibrationFallbacks(vib, ((CombinedVibrationEffect.Mono) effect).getEffect());
|
||||
} else if (effect instanceof CombinedVibrationEffect.Stereo) {
|
||||
private void fillVibrationFallbacks(Vibration vib, CombinedVibration effect) {
|
||||
if (effect instanceof CombinedVibration.Mono) {
|
||||
fillVibrationFallbacks(vib, ((CombinedVibration.Mono) effect).getEffect());
|
||||
} else if (effect instanceof CombinedVibration.Stereo) {
|
||||
SparseArray<VibrationEffect> effects =
|
||||
((CombinedVibrationEffect.Stereo) effect).getEffects();
|
||||
((CombinedVibration.Stereo) effect).getEffects();
|
||||
for (int i = 0; i < effects.size(); i++) {
|
||||
fillVibrationFallbacks(vib, effects.valueAt(i));
|
||||
}
|
||||
} else if (effect instanceof CombinedVibrationEffect.Sequential) {
|
||||
List<CombinedVibrationEffect> effects =
|
||||
((CombinedVibrationEffect.Sequential) effect).getEffects();
|
||||
} else if (effect instanceof CombinedVibration.Sequential) {
|
||||
List<CombinedVibration> effects =
|
||||
((CombinedVibration.Sequential) effect).getEffects();
|
||||
for (int i = 0; i < effects.size(); i++) {
|
||||
fillVibrationFallbacks(vib, effects.get(i));
|
||||
}
|
||||
@@ -825,15 +825,15 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
|
||||
@GuardedBy("mLock")
|
||||
@Nullable
|
||||
private SparseArray<PrebakedSegment> fixupAlwaysOnEffectsLocked(
|
||||
CombinedVibrationEffect effect) {
|
||||
CombinedVibration effect) {
|
||||
Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "fixupAlwaysOnEffectsLocked");
|
||||
try {
|
||||
SparseArray<VibrationEffect> effects;
|
||||
if (effect instanceof CombinedVibrationEffect.Mono) {
|
||||
VibrationEffect syncedEffect = ((CombinedVibrationEffect.Mono) effect).getEffect();
|
||||
if (effect instanceof CombinedVibration.Mono) {
|
||||
VibrationEffect syncedEffect = ((CombinedVibration.Mono) effect).getEffect();
|
||||
effects = transformAllVibratorsLocked(unused -> syncedEffect);
|
||||
} else if (effect instanceof CombinedVibrationEffect.Stereo) {
|
||||
effects = ((CombinedVibrationEffect.Stereo) effect).getEffects();
|
||||
} else if (effect instanceof CombinedVibration.Stereo) {
|
||||
effects = ((CombinedVibration.Stereo) effect).getEffects();
|
||||
} else {
|
||||
// Only synced combinations can be used for always-on effects.
|
||||
return null;
|
||||
@@ -1465,7 +1465,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
|
||||
|
||||
private int runMono() {
|
||||
CommonOptions commonOptions = new CommonOptions();
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.createSynced(nextEffect());
|
||||
CombinedVibration effect = CombinedVibration.createParallel(nextEffect());
|
||||
VibrationAttributes attrs = createVibrationAttributes(commonOptions);
|
||||
vibrate(Binder.getCallingUid(), SHELL_PACKAGE_NAME, effect, attrs,
|
||||
commonOptions.description, mToken);
|
||||
@@ -1474,8 +1474,8 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
|
||||
|
||||
private int runStereo() {
|
||||
CommonOptions commonOptions = new CommonOptions();
|
||||
CombinedVibrationEffect.SyncedCombination combination =
|
||||
CombinedVibrationEffect.startSynced();
|
||||
CombinedVibration.ParallelCombination combination =
|
||||
CombinedVibration.startParallel();
|
||||
while ("-v".equals(getNextOption())) {
|
||||
int vibratorId = Integer.parseInt(getNextArgRequired());
|
||||
combination.addVibrator(vibratorId, nextEffect());
|
||||
@@ -1488,8 +1488,8 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
|
||||
|
||||
private int runSequential() {
|
||||
CommonOptions commonOptions = new CommonOptions();
|
||||
CombinedVibrationEffect.SequentialCombination combination =
|
||||
CombinedVibrationEffect.startSequential();
|
||||
CombinedVibration.SequentialCombination combination =
|
||||
CombinedVibration.startSequential();
|
||||
while ("-v".equals(getNextOption())) {
|
||||
int vibratorId = Integer.parseInt(getNextArgRequired());
|
||||
combination.addNext(vibratorId, nextEffect());
|
||||
|
||||
@@ -34,7 +34,7 @@ import android.content.ContextWrapper;
|
||||
import android.hardware.input.IInputDevicesChangedListener;
|
||||
import android.hardware.input.IInputManager;
|
||||
import android.hardware.input.InputManager;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.Handler;
|
||||
import android.os.Process;
|
||||
import android.os.VibrationAttributes;
|
||||
@@ -67,8 +67,8 @@ public class InputDeviceDelegateTest {
|
||||
private static final String REASON = "some reason";
|
||||
private static final VibrationAttributes VIBRATION_ATTRIBUTES =
|
||||
new VibrationAttributes.Builder().setUsage(VibrationAttributes.USAGE_ALARM).build();
|
||||
private static final CombinedVibrationEffect SYNCED_EFFECT =
|
||||
CombinedVibrationEffect.createSynced(VibrationEffect.createOneShot(100, 255));
|
||||
private static final CombinedVibration SYNCED_EFFECT =
|
||||
CombinedVibration.createParallel(VibrationEffect.createOneShot(100, 255));
|
||||
|
||||
@Rule public MockitoRule rule = MockitoJUnit.rule();
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ import static org.mockito.Mockito.when;
|
||||
import android.hardware.vibrator.Braking;
|
||||
import android.hardware.vibrator.IVibrator;
|
||||
import android.hardware.vibrator.IVibratorManager;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.IBinder;
|
||||
import android.os.PowerManager;
|
||||
import android.os.Process;
|
||||
@@ -109,7 +109,7 @@ public class VibrationThreadTest {
|
||||
public void vibrate_noVibrator_ignoresVibration() {
|
||||
mVibratorProviders.clear();
|
||||
long vibrationId = 1;
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.createSynced(
|
||||
CombinedVibration effect = CombinedVibration.createParallel(
|
||||
VibrationEffect.get(VibrationEffect.EFFECT_CLICK));
|
||||
VibrationThread thread = startThreadAndDispatcher(vibrationId, effect);
|
||||
waitForCompletion(thread);
|
||||
@@ -122,7 +122,7 @@ public class VibrationThreadTest {
|
||||
@Test
|
||||
public void vibrate_missingVibrators_ignoresVibration() {
|
||||
long vibrationId = 1;
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSequential()
|
||||
CombinedVibration effect = CombinedVibration.startSequential()
|
||||
.addNext(2, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addNext(3, VibrationEffect.get(VibrationEffect.EFFECT_TICK))
|
||||
.combine();
|
||||
@@ -311,7 +311,7 @@ public class VibrationThreadTest {
|
||||
|
||||
long vibrationId = 1;
|
||||
VibrationEffect fallback = VibrationEffect.createOneShot(10, 100);
|
||||
Vibration vibration = createVibration(vibrationId, CombinedVibrationEffect.createSynced(
|
||||
Vibration vibration = createVibration(vibrationId, CombinedVibration.createParallel(
|
||||
VibrationEffect.get(VibrationEffect.EFFECT_CLICK)));
|
||||
vibration.addFallback(VibrationEffect.EFFECT_CLICK, fallback);
|
||||
VibrationThread thread = startThreadAndDispatcher(vibration);
|
||||
@@ -498,7 +498,7 @@ public class VibrationThreadTest {
|
||||
mVibratorProviders.get(1).setSupportedEffects(VibrationEffect.EFFECT_TICK);
|
||||
|
||||
long vibrationId = 1;
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(VIBRATOR_ID, VibrationEffect.get(VibrationEffect.EFFECT_TICK))
|
||||
.addVibrator(2, VibrationEffect.get(VibrationEffect.EFFECT_TICK))
|
||||
.combine();
|
||||
@@ -524,7 +524,7 @@ public class VibrationThreadTest {
|
||||
mVibratorProviders.get(3).setSupportedEffects(VibrationEffect.EFFECT_CLICK);
|
||||
|
||||
long vibrationId = 1;
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.createSynced(
|
||||
CombinedVibration effect = CombinedVibration.createParallel(
|
||||
VibrationEffect.get(VibrationEffect.EFFECT_CLICK));
|
||||
VibrationThread thread = startThreadAndDispatcher(vibrationId, effect);
|
||||
waitForCompletion(thread);
|
||||
@@ -557,7 +557,7 @@ public class VibrationThreadTest {
|
||||
VibrationEffect composed = VibrationEffect.startComposition()
|
||||
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK)
|
||||
.compose();
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addVibrator(2, VibrationEffect.createOneShot(10, 100))
|
||||
.addVibrator(3, VibrationEffect.createWaveform(
|
||||
@@ -603,7 +603,7 @@ public class VibrationThreadTest {
|
||||
VibrationEffect composed = VibrationEffect.startComposition()
|
||||
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK)
|
||||
.compose();
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSequential()
|
||||
CombinedVibration effect = CombinedVibration.startSequential()
|
||||
.addNext(3, VibrationEffect.get(VibrationEffect.EFFECT_CLICK), /* delay= */ 50)
|
||||
.addNext(1, VibrationEffect.createOneShot(10, 100), /* delay= */ 50)
|
||||
.addNext(2, composed, /* delay= */ 50)
|
||||
@@ -652,7 +652,7 @@ public class VibrationThreadTest {
|
||||
VibrationEffect composed = VibrationEffect.startComposition()
|
||||
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK, 1, 100)
|
||||
.compose();
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.createSynced(composed);
|
||||
CombinedVibration effect = CombinedVibration.createParallel(composed);
|
||||
VibrationThread thread = startThreadAndDispatcher(vibrationId, effect);
|
||||
|
||||
assertTrue(waitUntil(t -> !mVibratorProviders.get(1).getEffectSegments().isEmpty()
|
||||
@@ -686,7 +686,7 @@ public class VibrationThreadTest {
|
||||
VibrationEffect composed = VibrationEffect.startComposition()
|
||||
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK)
|
||||
.compose();
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addVibrator(2, VibrationEffect.createOneShot(10, 100))
|
||||
.addVibrator(3, VibrationEffect.createWaveform(new long[]{10}, new int[]{100}, -1))
|
||||
@@ -717,7 +717,7 @@ public class VibrationThreadTest {
|
||||
when(mThreadCallbacks.prepareSyncedVibration(anyLong(), any())).thenReturn(false);
|
||||
|
||||
long vibrationId = 1;
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.createOneShot(10, 100))
|
||||
.addVibrator(2, VibrationEffect.createWaveform(new long[]{5}, new int[]{200}, -1))
|
||||
.combine();
|
||||
@@ -746,7 +746,7 @@ public class VibrationThreadTest {
|
||||
when(mThreadCallbacks.triggerSyncedVibration(anyLong())).thenReturn(false);
|
||||
|
||||
long vibrationId = 1;
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.createOneShot(10, 100))
|
||||
.addVibrator(2, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.combine();
|
||||
@@ -772,7 +772,7 @@ public class VibrationThreadTest {
|
||||
mVibratorProviders.get(3).setCapabilities(IVibrator.CAP_AMPLITUDE_CONTROL);
|
||||
|
||||
long vibrationId = 1;
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.createWaveform(
|
||||
new long[]{5, 10, 10}, new int[]{1, 2, 3}, -1))
|
||||
.addVibrator(2, VibrationEffect.createWaveform(
|
||||
@@ -851,7 +851,7 @@ public class VibrationThreadTest {
|
||||
mVibratorProviders.get(2).setCapabilities(IVibrator.CAP_COMPOSE_EFFECTS);
|
||||
|
||||
long vibrationId = 1;
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addVibrator(2, VibrationEffect.startComposition()
|
||||
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK, 1f, 100)
|
||||
@@ -885,7 +885,7 @@ public class VibrationThreadTest {
|
||||
mVibratorProviders.get(2).setCapabilities(IVibrator.CAP_AMPLITUDE_CONTROL);
|
||||
|
||||
long vibrationId = 1;
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.createWaveform(
|
||||
new long[]{100, 100}, new int[]{1, 2}, 0))
|
||||
.addVibrator(2, VibrationEffect.createOneShot(100, 100))
|
||||
@@ -938,11 +938,11 @@ public class VibrationThreadTest {
|
||||
}
|
||||
|
||||
private VibrationThread startThreadAndDispatcher(long vibrationId, VibrationEffect effect) {
|
||||
return startThreadAndDispatcher(vibrationId, CombinedVibrationEffect.createSynced(effect));
|
||||
return startThreadAndDispatcher(vibrationId, CombinedVibration.createParallel(effect));
|
||||
}
|
||||
|
||||
private VibrationThread startThreadAndDispatcher(long vibrationId,
|
||||
CombinedVibrationEffect effect) {
|
||||
CombinedVibration effect) {
|
||||
return startThreadAndDispatcher(createVibration(vibrationId, effect));
|
||||
}
|
||||
|
||||
@@ -982,7 +982,7 @@ public class VibrationThreadTest {
|
||||
mTestLooper.dispatchAll();
|
||||
}
|
||||
|
||||
private Vibration createVibration(long id, CombinedVibrationEffect effect) {
|
||||
private Vibration createVibration(long id, CombinedVibration effect) {
|
||||
return new Vibration(mVibrationToken, (int) id, effect, ATTRS, UID, PACKAGE_NAME, "reason");
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ import android.hardware.vibrator.IVibrator;
|
||||
import android.hardware.vibrator.IVibratorManager;
|
||||
import android.media.AudioAttributes;
|
||||
import android.media.AudioManager;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.IVibratorStateListener;
|
||||
@@ -231,7 +231,7 @@ public class VibratorManagerServiceTest {
|
||||
assertNotNull(service.getVibratorInfo(1));
|
||||
assertFalse(service.isVibrating(1));
|
||||
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.createSynced(
|
||||
CombinedVibration effect = CombinedVibration.createParallel(
|
||||
VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));
|
||||
vibrate(service, effect, HAPTIC_FEEDBACK_ATTRS);
|
||||
service.cancelVibrate(service);
|
||||
@@ -343,7 +343,7 @@ public class VibratorManagerServiceTest {
|
||||
service.registerVibratorStateListener(i, listeners[i]);
|
||||
}
|
||||
|
||||
vibrate(service, CombinedVibrationEffect.startSynced()
|
||||
vibrate(service, CombinedVibration.startParallel()
|
||||
.addVibrator(0, VibrationEffect.createOneShot(40, 100))
|
||||
.addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.combine(), ALARM_ATTRS);
|
||||
@@ -361,7 +361,7 @@ public class VibratorManagerServiceTest {
|
||||
mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_ALWAYS_ON_CONTROL);
|
||||
mVibratorProviders.get(3).setCapabilities(IVibrator.CAP_ALWAYS_ON_CONTROL);
|
||||
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.createSynced(
|
||||
CombinedVibration effect = CombinedVibration.createParallel(
|
||||
VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));
|
||||
assertTrue(createSystemReadyService().setAlwaysOnEffect(
|
||||
UID, PACKAGE_NAME, 1, effect, ALARM_ATTRS));
|
||||
@@ -382,7 +382,7 @@ public class VibratorManagerServiceTest {
|
||||
mVibratorProviders.get(2).setCapabilities(IVibrator.CAP_ALWAYS_ON_CONTROL);
|
||||
mVibratorProviders.get(4).setCapabilities(IVibrator.CAP_ALWAYS_ON_CONTROL);
|
||||
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
|
||||
.addVibrator(2, VibrationEffect.createPredefined(VibrationEffect.EFFECT_TICK))
|
||||
.addVibrator(3, VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
|
||||
@@ -409,7 +409,7 @@ public class VibratorManagerServiceTest {
|
||||
mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_ALWAYS_ON_CONTROL);
|
||||
mVibratorProviders.get(3).setCapabilities(IVibrator.CAP_ALWAYS_ON_CONTROL);
|
||||
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.createSynced(
|
||||
CombinedVibration effect = CombinedVibration.createParallel(
|
||||
VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));
|
||||
assertTrue(createSystemReadyService().setAlwaysOnEffect(
|
||||
UID, PACKAGE_NAME, 1, effect, ALARM_ATTRS));
|
||||
@@ -427,7 +427,7 @@ public class VibratorManagerServiceTest {
|
||||
mockVibrators(1);
|
||||
mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_ALWAYS_ON_CONTROL);
|
||||
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.createSynced(
|
||||
CombinedVibration effect = CombinedVibration.createParallel(
|
||||
VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE));
|
||||
assertFalse(createSystemReadyService().setAlwaysOnEffect(
|
||||
UID, PACKAGE_NAME, 1, effect, ALARM_ATTRS));
|
||||
@@ -440,7 +440,7 @@ public class VibratorManagerServiceTest {
|
||||
mockVibrators(1);
|
||||
mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_ALWAYS_ON_CONTROL);
|
||||
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSequential()
|
||||
CombinedVibration effect = CombinedVibration.startSequential()
|
||||
.addNext(0, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.combine();
|
||||
assertFalse(createSystemReadyService().setAlwaysOnEffect(
|
||||
@@ -454,9 +454,9 @@ public class VibratorManagerServiceTest {
|
||||
mockVibrators(1);
|
||||
VibratorManagerService service = createSystemReadyService();
|
||||
|
||||
CombinedVibrationEffect mono = CombinedVibrationEffect.createSynced(
|
||||
CombinedVibration mono = CombinedVibration.createParallel(
|
||||
VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));
|
||||
CombinedVibrationEffect stereo = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration stereo = CombinedVibration.startParallel()
|
||||
.addVibrator(0, VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
|
||||
.combine();
|
||||
assertFalse(service.setAlwaysOnEffect(UID, PACKAGE_NAME, 1, mono, ALARM_ATTRS));
|
||||
@@ -624,7 +624,7 @@ public class VibratorManagerServiceTest {
|
||||
setUserSetting(Settings.System.VIBRATE_INPUT_DEVICES, 1);
|
||||
VibratorManagerService service = createSystemReadyService();
|
||||
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.createSynced(
|
||||
CombinedVibration effect = CombinedVibration.createParallel(
|
||||
VibrationEffect.createOneShot(10, 10));
|
||||
vibrate(service, effect, ALARM_ATTRS);
|
||||
verify(mIInputManagerMock).vibrateCombined(eq(1), eq(effect), any());
|
||||
@@ -680,7 +680,7 @@ public class VibratorManagerServiceTest {
|
||||
VibrationEffect composed = VibrationEffect.startComposition()
|
||||
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK, 1, 100)
|
||||
.compose();
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.createSynced(composed);
|
||||
CombinedVibration effect = CombinedVibration.createParallel(composed);
|
||||
|
||||
// Wait for vibration to start, it should finish right away with trigger callback.
|
||||
vibrate(service, effect, ALARM_ATTRS);
|
||||
@@ -712,7 +712,7 @@ public class VibratorManagerServiceTest {
|
||||
mVibratorProviders.get(2).setCapabilities(IVibrator.CAP_COMPOSE_EFFECTS);
|
||||
VibratorManagerService service = createSystemReadyService();
|
||||
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addVibrator(2, VibrationEffect.startComposition()
|
||||
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK)
|
||||
@@ -738,7 +738,7 @@ public class VibratorManagerServiceTest {
|
||||
fakeVibrator1.setSupportedEffects(VibrationEffect.EFFECT_CLICK);
|
||||
VibratorManagerService service = createSystemReadyService();
|
||||
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.addVibrator(2, VibrationEffect.createOneShot(10, 100))
|
||||
.combine();
|
||||
@@ -758,7 +758,7 @@ public class VibratorManagerServiceTest {
|
||||
when(mNativeWrapperMock.prepareSynced(any())).thenReturn(false);
|
||||
VibratorManagerService service = createSystemReadyService();
|
||||
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.createOneShot(10, 50))
|
||||
.addVibrator(2, VibrationEffect.createOneShot(10, 100))
|
||||
.combine();
|
||||
@@ -779,7 +779,7 @@ public class VibratorManagerServiceTest {
|
||||
when(mNativeWrapperMock.triggerSynced(anyLong())).thenReturn(false);
|
||||
VibratorManagerService service = createSystemReadyService();
|
||||
|
||||
CombinedVibrationEffect effect = CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration effect = CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.createOneShot(10, 50))
|
||||
.addVibrator(2, VibrationEffect.createOneShot(10, 100))
|
||||
.combine();
|
||||
@@ -809,7 +809,7 @@ public class VibratorManagerServiceTest {
|
||||
fakeVibrator.setSupportedEffects(VibrationEffect.EFFECT_CLICK);
|
||||
VibratorManagerService service = createSystemReadyService();
|
||||
|
||||
vibrate(service, CombinedVibrationEffect.startSequential()
|
||||
vibrate(service, CombinedVibration.startSequential()
|
||||
.addNext(1, VibrationEffect.createOneShot(20, 100))
|
||||
.combine(), NOTIFICATION_ATTRS);
|
||||
assertTrue(waitUntil(s -> fakeVibrator.getEffectSegments().size() == 1,
|
||||
@@ -822,7 +822,7 @@ public class VibratorManagerServiceTest {
|
||||
assertTrue(waitUntil(s -> fakeVibrator.getEffectSegments().size() == 3,
|
||||
service, TEST_TIMEOUT_MILLIS));
|
||||
|
||||
vibrate(service, CombinedVibrationEffect.startSynced()
|
||||
vibrate(service, CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
|
||||
.combine(), ALARM_ATTRS);
|
||||
assertTrue(waitUntil(s -> fakeVibrator.getEffectSegments().size() == 4,
|
||||
@@ -853,7 +853,7 @@ public class VibratorManagerServiceTest {
|
||||
mockVibrators(1, 2);
|
||||
VibratorManagerService service = createSystemReadyService();
|
||||
vibrate(service,
|
||||
CombinedVibrationEffect.startSynced()
|
||||
CombinedVibration.startParallel()
|
||||
.addVibrator(1, VibrationEffect.createOneShot(1000, 100))
|
||||
.combine(),
|
||||
HAPTIC_FEEDBACK_ATTRS);
|
||||
@@ -941,10 +941,10 @@ public class VibratorManagerServiceTest {
|
||||
|
||||
private void vibrate(VibratorManagerService service, VibrationEffect effect,
|
||||
VibrationAttributes attrs) {
|
||||
vibrate(service, CombinedVibrationEffect.createSynced(effect), attrs);
|
||||
vibrate(service, CombinedVibration.createParallel(effect), attrs);
|
||||
}
|
||||
|
||||
private void vibrate(VibratorManagerService service, CombinedVibrationEffect effect,
|
||||
private void vibrate(VibratorManagerService service, CombinedVibration effect,
|
||||
VibrationAttributes attrs) {
|
||||
service.vibrate(UID, PACKAGE_NAME, effect, attrs, "some reason", service);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import static junit.framework.Assert.fail;
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.os.Binder;
|
||||
import android.os.CombinedVibrationEffect;
|
||||
import android.os.CombinedVibration;
|
||||
import android.os.IVibratorManagerService;
|
||||
import android.os.IVibratorStateListener;
|
||||
import android.os.Process;
|
||||
@@ -50,8 +50,8 @@ import org.junit.runners.JUnit4;
|
||||
public class VibratorManagerServicePermissionTest {
|
||||
|
||||
private static final String PACKAGE_NAME = "com.android.framework.permission.tests";
|
||||
private static final CombinedVibrationEffect EFFECT =
|
||||
CombinedVibrationEffect.createSynced(
|
||||
private static final CombinedVibration EFFECT =
|
||||
CombinedVibration.createParallel(
|
||||
VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE));
|
||||
private static final VibrationAttributes ATTRS = new VibrationAttributes.Builder()
|
||||
.setUsage(VibrationAttributes.USAGE_ALARM)
|
||||
|
||||
Reference in New Issue
Block a user