Loading core/api/current.txt +0 −36 Original line number Diff line number Diff line Loading @@ -32341,9 +32341,6 @@ package android.os { method public static android.os.VibrationEffect createWaveform(long[], int[], int); method public int describeContents(); method @NonNull public static android.os.VibrationEffect.Composition startComposition(); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(@NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(@NonNull android.os.VibrationEffect.VibrationParameter, @NonNull android.os.VibrationEffect.VibrationParameter); field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect> CREATOR; field public static final int DEFAULT_AMPLITUDE = -1; // 0xffffffff field public static final int EFFECT_CLICK = 0; // 0x0 Loading @@ -32353,13 +32350,10 @@ package android.os { } public static final class VibrationEffect.Composition { method @NonNull public android.os.VibrationEffect.Composition addEffect(@NonNull android.os.VibrationEffect); method @NonNull public android.os.VibrationEffect.Composition addOffDuration(@NonNull java.time.Duration); method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int); method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float); method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float, @IntRange(from=0) int); method @NonNull public android.os.VibrationEffect compose(); method @NonNull public android.os.VibrationEffect.Composition repeatEffectIndefinitely(@NonNull android.os.VibrationEffect); field public static final int PRIMITIVE_CLICK = 1; // 0x1 field public static final int PRIMITIVE_LOW_TICK = 8; // 0x8 field public static final int PRIMITIVE_QUICK_FALL = 6; // 0x6 Loading @@ -32370,34 +32364,15 @@ package android.os { field public static final int PRIMITIVE_TICK = 7; // 0x7 } public static final class VibrationEffect.Composition.UnreachableAfterRepeatingIndefinitelyException extends java.lang.IllegalStateException { } public static class VibrationEffect.VibrationParameter { method @NonNull public static android.os.VibrationEffect.VibrationParameter targetAmplitude(@FloatRange(from=0, to=1) float); method @NonNull public static android.os.VibrationEffect.VibrationParameter targetFrequency(@FloatRange(from=1) float); } public static final class VibrationEffect.WaveformBuilder { method @NonNull public android.os.VibrationEffect.WaveformBuilder addSustain(@NonNull java.time.Duration); method @NonNull public android.os.VibrationEffect.WaveformBuilder addTransition(@NonNull java.time.Duration, @NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public android.os.VibrationEffect.WaveformBuilder addTransition(@NonNull java.time.Duration, @NonNull android.os.VibrationEffect.VibrationParameter, @NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public android.os.VibrationEffect build(); } public abstract class Vibrator { method public final int areAllEffectsSupported(@NonNull int...); method public final boolean areAllPrimitivesSupported(@NonNull int...); method @NonNull public int[] areEffectsSupported(@NonNull int...); method @NonNull public boolean[] arePrimitivesSupported(@NonNull int...); method @RequiresPermission(android.Manifest.permission.VIBRATE) public abstract void cancel(); method @Nullable public android.os.vibrator.VibratorFrequencyProfile getFrequencyProfile(); method public int getId(); method @NonNull public int[] getPrimitiveDurations(@NonNull int...); method public float getQFactor(); method public float getResonantFrequency(); method public abstract boolean hasAmplitudeControl(); method public boolean hasFrequencyControl(); method public abstract boolean hasVibrator(); method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long); method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long, android.media.AudioAttributes); Loading Loading @@ -32725,17 +32700,6 @@ package android.os.strictmode { } package android.os.vibrator { public final class VibratorFrequencyProfile { method public float getMaxAmplitudeMeasurementInterval(); method @FloatRange(from=0, to=1) @NonNull public float[] getMaxAmplitudeMeasurements(); method public float getMaxFrequency(); method public float getMinFrequency(); } } package android.preference { @Deprecated public class CheckBoxPreference extends android.preference.TwoStatePreference { core/api/test-current.txt +35 −0 Original line number Diff line number Diff line Loading @@ -1871,6 +1871,9 @@ package android.os { method public static android.os.VibrationEffect get(int, boolean); method @Nullable public static android.os.VibrationEffect get(android.net.Uri, android.content.Context); method public abstract long getDuration(); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(@NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(@NonNull android.os.VibrationEffect.VibrationParameter, @NonNull android.os.VibrationEffect.VibrationParameter); field public static final int EFFECT_POP = 4; // 0x4 field public static final int EFFECT_STRENGTH_LIGHT = 0; // 0x0 field public static final int EFFECT_STRENGTH_MEDIUM = 1; // 0x1 Loading @@ -1888,8 +1891,33 @@ package android.os { field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.Composed> CREATOR; } public static final class VibrationEffect.Composition { method @NonNull public android.os.VibrationEffect.Composition addEffect(@NonNull android.os.VibrationEffect); method @NonNull public android.os.VibrationEffect.Composition addOffDuration(@NonNull java.time.Duration); method @NonNull public android.os.VibrationEffect.Composition repeatEffectIndefinitely(@NonNull android.os.VibrationEffect); } public static final class VibrationEffect.Composition.UnreachableAfterRepeatingIndefinitelyException extends java.lang.IllegalStateException { } public static class VibrationEffect.VibrationParameter { method @NonNull public static android.os.VibrationEffect.VibrationParameter targetAmplitude(@FloatRange(from=0, to=1) float); method @NonNull public static android.os.VibrationEffect.VibrationParameter targetFrequency(@FloatRange(from=1) float); } public static final class VibrationEffect.WaveformBuilder { method @NonNull public android.os.VibrationEffect.WaveformBuilder addSustain(@NonNull java.time.Duration); method @NonNull public android.os.VibrationEffect.WaveformBuilder addTransition(@NonNull java.time.Duration, @NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public android.os.VibrationEffect.WaveformBuilder addTransition(@NonNull java.time.Duration, @NonNull android.os.VibrationEffect.VibrationParameter, @NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public android.os.VibrationEffect build(); } public abstract class Vibrator { method public int getDefaultVibrationIntensity(int); method @Nullable public android.os.vibrator.VibratorFrequencyProfile getFrequencyProfile(); method public float getQFactor(); method public float getResonantFrequency(); method public boolean hasFrequencyControl(); field public static final int VIBRATION_INTENSITY_HIGH = 3; // 0x3 field public static final int VIBRATION_INTENSITY_LOW = 1; // 0x1 field public static final int VIBRATION_INTENSITY_MEDIUM = 2; // 0x2 Loading Loading @@ -2074,6 +2102,13 @@ package android.os.vibrator { field @NonNull public static final android.os.Parcelable.Creator<android.os.vibrator.VibrationEffectSegment> CREATOR; } public final class VibratorFrequencyProfile { method public float getMaxAmplitudeMeasurementInterval(); method @FloatRange(from=0, to=1) @NonNull public float[] getMaxAmplitudeMeasurements(); method public float getMaxFrequency(); method public float getMinFrequency(); } } package android.permission { Loading core/java/android/os/VibrationEffect.java +18 −0 Original line number Diff line number Diff line Loading @@ -413,8 +413,10 @@ public abstract class VibrationEffect implements Parcelable { * {@link #startWaveform(VibrationEffect.VibrationParameter)}. * * @see VibrationEffect.WaveformBuilder * @hide */ @NonNull @TestApi public static WaveformBuilder startWaveform() { return new WaveformBuilder(); } Loading @@ -431,8 +433,10 @@ public abstract class VibrationEffect implements Parcelable { * @return The {@link VibrationEffect.WaveformBuilder} started with the initial parameters. * * @see VibrationEffect.WaveformBuilder * @hide */ @NonNull @TestApi public static WaveformBuilder startWaveform(@NonNull VibrationParameter initialParameter) { WaveformBuilder builder = startWaveform(); builder.addTransition(Duration.ZERO, initialParameter); Loading @@ -454,8 +458,10 @@ public abstract class VibrationEffect implements Parcelable { * @return The {@link VibrationEffect.WaveformBuilder} started with the initial parameters. * * @see VibrationEffect.WaveformBuilder * @hide */ @NonNull @TestApi public static WaveformBuilder startWaveform(@NonNull VibrationParameter initialParameter1, @NonNull VibrationParameter initialParameter2) { WaveformBuilder builder = startWaveform(); Loading Loading @@ -869,7 +875,9 @@ public abstract class VibrationEffect implements Parcelable { /** * Exception thrown when adding an element to a {@link Composition} that already ends in an * indefinitely repeating effect. * @hide */ @TestApi public static final class UnreachableAfterRepeatingIndefinitelyException extends IllegalStateException { UnreachableAfterRepeatingIndefinitelyException() { Loading Loading @@ -938,8 +946,10 @@ public abstract class VibrationEffect implements Parcelable { * * @throws UnreachableAfterRepeatingIndefinitelyException if the composition is currently * ending with a repeating effect. * @hide */ @NonNull @TestApi public Composition addOffDuration(@NonNull Duration duration) { int durationMs = (int) duration.toMillis(); Preconditions.checkArgumentNonnegative(durationMs, "Off period must be non-negative"); Loading @@ -965,8 +975,10 @@ public abstract class VibrationEffect implements Parcelable { * * @throws UnreachableAfterRepeatingIndefinitelyException if the composition is currently * ending with a repeating effect. * @hide */ @NonNull @TestApi public Composition addEffect(@NonNull VibrationEffect effect) { return addSegments(effect); } Loading @@ -987,8 +999,10 @@ public abstract class VibrationEffect implements Parcelable { * @throws IllegalArgumentException if the given effect is already repeating indefinitely. * @throws UnreachableAfterRepeatingIndefinitelyException if the composition is currently * ending with a repeating effect. * @hide */ @NonNull @TestApi public Composition repeatEffectIndefinitely(@NonNull VibrationEffect effect) { Preconditions.checkArgument(effect.getDuration() < Long.MAX_VALUE, "Can't repeat an indefinitely repeating effect. Consider addEffect instead."); Loading Loading @@ -1202,7 +1216,9 @@ public abstract class VibrationEffect implements Parcelable { * .build();}</pre> * * @see VibrationEffect#startWaveform * @hide */ @TestApi public static final class WaveformBuilder { // Epsilon used for float comparison of amplitude and frequency values on transitions. private static final float EPSILON = 1e-5f; Loading Loading @@ -1383,8 +1399,10 @@ public abstract class VibrationEffect implements Parcelable { * <p>Examples of concrete parameters are the vibration amplitude or frequency. * * @see VibrationEffect.WaveformBuilder * @hide */ @SuppressWarnings("UserHandleName") // This is not a regular set of parameters, no *Params. @TestApi public static class VibrationParameter { VibrationParameter() { } Loading core/java/android/os/Vibrator.java +8 −0 Original line number Diff line number Diff line Loading @@ -212,7 +212,9 @@ public abstract class Vibrator { * * @return True if the hardware can control the frequency of the vibrations independently of * the vibration amplitude, false otherwise. * @hide */ @TestApi public boolean hasFrequencyControl() { // We currently can only control frequency of the vibration using the compose PWLE method. return getInfo().hasCapability( Loading @@ -236,7 +238,9 @@ public abstract class Vibrator { * @return the resonant frequency of the vibrator, or {@link Float#NaN NaN} if it's unknown, not * applicable, or if this vibrator is a composite of multiple physical devices with different * frequencies. * @hide */ @TestApi public float getResonantFrequency() { return getInfo().getResonantFrequencyHz(); } Loading @@ -247,7 +251,9 @@ public abstract class Vibrator { * @return the Q factor of the vibrator, or {@link Float#NaN NaN} if it's unknown, not * applicable, or if this vibrator is a composite of multiple physical devices with different * Q factors. * @hide */ @TestApi public float getQFactor() { return getInfo().getQFactor(); } Loading @@ -262,7 +268,9 @@ public abstract class Vibrator { * frequency control. If this vibrator is a composite of multiple physical devices then this * will return a profile supported in all devices, or null if the intersection is empty or not * available. * @hide */ @TestApi @Nullable public VibratorFrequencyProfile getFrequencyProfile() { VibratorInfo.FrequencyProfile frequencyProfile = getInfo().getFrequencyProfile(); Loading core/java/android/os/vibrator/VibratorFrequencyProfile.java +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.os.vibrator; import android.annotation.FloatRange; import android.annotation.NonNull; import android.annotation.TestApi; import android.os.VibratorInfo; import com.android.internal.util.Preconditions; Loading @@ -38,7 +39,9 @@ import com.android.internal.util.Preconditions; * frequency increment between each pair of amplitude values. * * <p>Vibrators without independent frequency control do not have a frequency profile. * @hide */ @TestApi public final class VibratorFrequencyProfile { private final VibratorInfo.FrequencyProfile mFrequencyProfile; Loading Loading
core/api/current.txt +0 −36 Original line number Diff line number Diff line Loading @@ -32341,9 +32341,6 @@ package android.os { method public static android.os.VibrationEffect createWaveform(long[], int[], int); method public int describeContents(); method @NonNull public static android.os.VibrationEffect.Composition startComposition(); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(@NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(@NonNull android.os.VibrationEffect.VibrationParameter, @NonNull android.os.VibrationEffect.VibrationParameter); field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect> CREATOR; field public static final int DEFAULT_AMPLITUDE = -1; // 0xffffffff field public static final int EFFECT_CLICK = 0; // 0x0 Loading @@ -32353,13 +32350,10 @@ package android.os { } public static final class VibrationEffect.Composition { method @NonNull public android.os.VibrationEffect.Composition addEffect(@NonNull android.os.VibrationEffect); method @NonNull public android.os.VibrationEffect.Composition addOffDuration(@NonNull java.time.Duration); method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int); method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float); method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float, @IntRange(from=0) int); method @NonNull public android.os.VibrationEffect compose(); method @NonNull public android.os.VibrationEffect.Composition repeatEffectIndefinitely(@NonNull android.os.VibrationEffect); field public static final int PRIMITIVE_CLICK = 1; // 0x1 field public static final int PRIMITIVE_LOW_TICK = 8; // 0x8 field public static final int PRIMITIVE_QUICK_FALL = 6; // 0x6 Loading @@ -32370,34 +32364,15 @@ package android.os { field public static final int PRIMITIVE_TICK = 7; // 0x7 } public static final class VibrationEffect.Composition.UnreachableAfterRepeatingIndefinitelyException extends java.lang.IllegalStateException { } public static class VibrationEffect.VibrationParameter { method @NonNull public static android.os.VibrationEffect.VibrationParameter targetAmplitude(@FloatRange(from=0, to=1) float); method @NonNull public static android.os.VibrationEffect.VibrationParameter targetFrequency(@FloatRange(from=1) float); } public static final class VibrationEffect.WaveformBuilder { method @NonNull public android.os.VibrationEffect.WaveformBuilder addSustain(@NonNull java.time.Duration); method @NonNull public android.os.VibrationEffect.WaveformBuilder addTransition(@NonNull java.time.Duration, @NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public android.os.VibrationEffect.WaveformBuilder addTransition(@NonNull java.time.Duration, @NonNull android.os.VibrationEffect.VibrationParameter, @NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public android.os.VibrationEffect build(); } public abstract class Vibrator { method public final int areAllEffectsSupported(@NonNull int...); method public final boolean areAllPrimitivesSupported(@NonNull int...); method @NonNull public int[] areEffectsSupported(@NonNull int...); method @NonNull public boolean[] arePrimitivesSupported(@NonNull int...); method @RequiresPermission(android.Manifest.permission.VIBRATE) public abstract void cancel(); method @Nullable public android.os.vibrator.VibratorFrequencyProfile getFrequencyProfile(); method public int getId(); method @NonNull public int[] getPrimitiveDurations(@NonNull int...); method public float getQFactor(); method public float getResonantFrequency(); method public abstract boolean hasAmplitudeControl(); method public boolean hasFrequencyControl(); method public abstract boolean hasVibrator(); method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long); method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long, android.media.AudioAttributes); Loading Loading @@ -32725,17 +32700,6 @@ package android.os.strictmode { } package android.os.vibrator { public final class VibratorFrequencyProfile { method public float getMaxAmplitudeMeasurementInterval(); method @FloatRange(from=0, to=1) @NonNull public float[] getMaxAmplitudeMeasurements(); method public float getMaxFrequency(); method public float getMinFrequency(); } } package android.preference { @Deprecated public class CheckBoxPreference extends android.preference.TwoStatePreference {
core/api/test-current.txt +35 −0 Original line number Diff line number Diff line Loading @@ -1871,6 +1871,9 @@ package android.os { method public static android.os.VibrationEffect get(int, boolean); method @Nullable public static android.os.VibrationEffect get(android.net.Uri, android.content.Context); method public abstract long getDuration(); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(@NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public static android.os.VibrationEffect.WaveformBuilder startWaveform(@NonNull android.os.VibrationEffect.VibrationParameter, @NonNull android.os.VibrationEffect.VibrationParameter); field public static final int EFFECT_POP = 4; // 0x4 field public static final int EFFECT_STRENGTH_LIGHT = 0; // 0x0 field public static final int EFFECT_STRENGTH_MEDIUM = 1; // 0x1 Loading @@ -1888,8 +1891,33 @@ package android.os { field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.Composed> CREATOR; } public static final class VibrationEffect.Composition { method @NonNull public android.os.VibrationEffect.Composition addEffect(@NonNull android.os.VibrationEffect); method @NonNull public android.os.VibrationEffect.Composition addOffDuration(@NonNull java.time.Duration); method @NonNull public android.os.VibrationEffect.Composition repeatEffectIndefinitely(@NonNull android.os.VibrationEffect); } public static final class VibrationEffect.Composition.UnreachableAfterRepeatingIndefinitelyException extends java.lang.IllegalStateException { } public static class VibrationEffect.VibrationParameter { method @NonNull public static android.os.VibrationEffect.VibrationParameter targetAmplitude(@FloatRange(from=0, to=1) float); method @NonNull public static android.os.VibrationEffect.VibrationParameter targetFrequency(@FloatRange(from=1) float); } public static final class VibrationEffect.WaveformBuilder { method @NonNull public android.os.VibrationEffect.WaveformBuilder addSustain(@NonNull java.time.Duration); method @NonNull public android.os.VibrationEffect.WaveformBuilder addTransition(@NonNull java.time.Duration, @NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public android.os.VibrationEffect.WaveformBuilder addTransition(@NonNull java.time.Duration, @NonNull android.os.VibrationEffect.VibrationParameter, @NonNull android.os.VibrationEffect.VibrationParameter); method @NonNull public android.os.VibrationEffect build(); } public abstract class Vibrator { method public int getDefaultVibrationIntensity(int); method @Nullable public android.os.vibrator.VibratorFrequencyProfile getFrequencyProfile(); method public float getQFactor(); method public float getResonantFrequency(); method public boolean hasFrequencyControl(); field public static final int VIBRATION_INTENSITY_HIGH = 3; // 0x3 field public static final int VIBRATION_INTENSITY_LOW = 1; // 0x1 field public static final int VIBRATION_INTENSITY_MEDIUM = 2; // 0x2 Loading Loading @@ -2074,6 +2102,13 @@ package android.os.vibrator { field @NonNull public static final android.os.Parcelable.Creator<android.os.vibrator.VibrationEffectSegment> CREATOR; } public final class VibratorFrequencyProfile { method public float getMaxAmplitudeMeasurementInterval(); method @FloatRange(from=0, to=1) @NonNull public float[] getMaxAmplitudeMeasurements(); method public float getMaxFrequency(); method public float getMinFrequency(); } } package android.permission { Loading
core/java/android/os/VibrationEffect.java +18 −0 Original line number Diff line number Diff line Loading @@ -413,8 +413,10 @@ public abstract class VibrationEffect implements Parcelable { * {@link #startWaveform(VibrationEffect.VibrationParameter)}. * * @see VibrationEffect.WaveformBuilder * @hide */ @NonNull @TestApi public static WaveformBuilder startWaveform() { return new WaveformBuilder(); } Loading @@ -431,8 +433,10 @@ public abstract class VibrationEffect implements Parcelable { * @return The {@link VibrationEffect.WaveformBuilder} started with the initial parameters. * * @see VibrationEffect.WaveformBuilder * @hide */ @NonNull @TestApi public static WaveformBuilder startWaveform(@NonNull VibrationParameter initialParameter) { WaveformBuilder builder = startWaveform(); builder.addTransition(Duration.ZERO, initialParameter); Loading @@ -454,8 +458,10 @@ public abstract class VibrationEffect implements Parcelable { * @return The {@link VibrationEffect.WaveformBuilder} started with the initial parameters. * * @see VibrationEffect.WaveformBuilder * @hide */ @NonNull @TestApi public static WaveformBuilder startWaveform(@NonNull VibrationParameter initialParameter1, @NonNull VibrationParameter initialParameter2) { WaveformBuilder builder = startWaveform(); Loading Loading @@ -869,7 +875,9 @@ public abstract class VibrationEffect implements Parcelable { /** * Exception thrown when adding an element to a {@link Composition} that already ends in an * indefinitely repeating effect. * @hide */ @TestApi public static final class UnreachableAfterRepeatingIndefinitelyException extends IllegalStateException { UnreachableAfterRepeatingIndefinitelyException() { Loading Loading @@ -938,8 +946,10 @@ public abstract class VibrationEffect implements Parcelable { * * @throws UnreachableAfterRepeatingIndefinitelyException if the composition is currently * ending with a repeating effect. * @hide */ @NonNull @TestApi public Composition addOffDuration(@NonNull Duration duration) { int durationMs = (int) duration.toMillis(); Preconditions.checkArgumentNonnegative(durationMs, "Off period must be non-negative"); Loading @@ -965,8 +975,10 @@ public abstract class VibrationEffect implements Parcelable { * * @throws UnreachableAfterRepeatingIndefinitelyException if the composition is currently * ending with a repeating effect. * @hide */ @NonNull @TestApi public Composition addEffect(@NonNull VibrationEffect effect) { return addSegments(effect); } Loading @@ -987,8 +999,10 @@ public abstract class VibrationEffect implements Parcelable { * @throws IllegalArgumentException if the given effect is already repeating indefinitely. * @throws UnreachableAfterRepeatingIndefinitelyException if the composition is currently * ending with a repeating effect. * @hide */ @NonNull @TestApi public Composition repeatEffectIndefinitely(@NonNull VibrationEffect effect) { Preconditions.checkArgument(effect.getDuration() < Long.MAX_VALUE, "Can't repeat an indefinitely repeating effect. Consider addEffect instead."); Loading Loading @@ -1202,7 +1216,9 @@ public abstract class VibrationEffect implements Parcelable { * .build();}</pre> * * @see VibrationEffect#startWaveform * @hide */ @TestApi public static final class WaveformBuilder { // Epsilon used for float comparison of amplitude and frequency values on transitions. private static final float EPSILON = 1e-5f; Loading Loading @@ -1383,8 +1399,10 @@ public abstract class VibrationEffect implements Parcelable { * <p>Examples of concrete parameters are the vibration amplitude or frequency. * * @see VibrationEffect.WaveformBuilder * @hide */ @SuppressWarnings("UserHandleName") // This is not a regular set of parameters, no *Params. @TestApi public static class VibrationParameter { VibrationParameter() { } Loading
core/java/android/os/Vibrator.java +8 −0 Original line number Diff line number Diff line Loading @@ -212,7 +212,9 @@ public abstract class Vibrator { * * @return True if the hardware can control the frequency of the vibrations independently of * the vibration amplitude, false otherwise. * @hide */ @TestApi public boolean hasFrequencyControl() { // We currently can only control frequency of the vibration using the compose PWLE method. return getInfo().hasCapability( Loading @@ -236,7 +238,9 @@ public abstract class Vibrator { * @return the resonant frequency of the vibrator, or {@link Float#NaN NaN} if it's unknown, not * applicable, or if this vibrator is a composite of multiple physical devices with different * frequencies. * @hide */ @TestApi public float getResonantFrequency() { return getInfo().getResonantFrequencyHz(); } Loading @@ -247,7 +251,9 @@ public abstract class Vibrator { * @return the Q factor of the vibrator, or {@link Float#NaN NaN} if it's unknown, not * applicable, or if this vibrator is a composite of multiple physical devices with different * Q factors. * @hide */ @TestApi public float getQFactor() { return getInfo().getQFactor(); } Loading @@ -262,7 +268,9 @@ public abstract class Vibrator { * frequency control. If this vibrator is a composite of multiple physical devices then this * will return a profile supported in all devices, or null if the intersection is empty or not * available. * @hide */ @TestApi @Nullable public VibratorFrequencyProfile getFrequencyProfile() { VibratorInfo.FrequencyProfile frequencyProfile = getInfo().getFrequencyProfile(); Loading
core/java/android/os/vibrator/VibratorFrequencyProfile.java +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.os.vibrator; import android.annotation.FloatRange; import android.annotation.NonNull; import android.annotation.TestApi; import android.os.VibratorInfo; import com.android.internal.util.Preconditions; Loading @@ -38,7 +39,9 @@ import com.android.internal.util.Preconditions; * frequency increment between each pair of amplitude values. * * <p>Vibrators without independent frequency control do not have a frequency profile. * @hide */ @TestApi public final class VibratorFrequencyProfile { private final VibratorInfo.FrequencyProfile mFrequencyProfile; Loading