Merge "Rename CombinedVibrationEffect to CombinedVibration" into sc-dev

This commit is contained in:
Lais Andrade
2021-04-12 20:08:41 +00:00
committed by Android (Google) Code Review
23 changed files with 318 additions and 296 deletions

View File

@@ -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();

View File

@@ -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 {

View File

@@ -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";
/**

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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) {

View File

@@ -16,4 +16,4 @@
package android.os;
parcelable CombinedVibrationEffect;
parcelable CombinedVibration;

View File

@@ -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];
}
};
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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);
/**

View File

@@ -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) {

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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++) {

View File

@@ -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));

View File

@@ -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;
}

View File

@@ -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());

View File

@@ -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();

View File

@@ -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");
}

View File

@@ -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);
}

View File

@@ -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)