Merge "Update notification PWLE patterns for default and fallback" into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
be9b8400b5
@@ -39,6 +39,9 @@ public final class VibratorHelper {
|
||||
|
||||
private static final long[] DEFAULT_VIBRATE_PATTERN = {0, 250, 250, 250};
|
||||
private static final int VIBRATE_PATTERN_MAXLEN = 8 * 2 + 1; // up to eight bumps
|
||||
private static final int CHIRP_LEVEL_DURATION_MILLIS = 100;
|
||||
private static final int DEFAULT_CHIRP_RAMP_DURATION_MILLIS = 100;
|
||||
private static final int FALLBACK_CHIRP_RAMP_DURATION_MILLIS = 50;
|
||||
|
||||
private final Vibrator mVibrator;
|
||||
private final long[] mDefaultPattern;
|
||||
@@ -102,6 +105,9 @@ public final class VibratorHelper {
|
||||
* @param insistent {@code true} if the vibration should loop until it is cancelled.
|
||||
*/
|
||||
public VibrationEffect createFallbackVibration(boolean insistent) {
|
||||
if (mVibrator.hasFrequencyControl()) {
|
||||
return createChirpVibration(FALLBACK_CHIRP_RAMP_DURATION_MILLIS, insistent);
|
||||
}
|
||||
return createWaveformVibration(mFallbackPattern, insistent);
|
||||
}
|
||||
|
||||
@@ -111,9 +117,32 @@ public final class VibratorHelper {
|
||||
* @param insistent {@code true} if the vibration should loop until it is cancelled.
|
||||
*/
|
||||
public VibrationEffect createDefaultVibration(boolean insistent) {
|
||||
if (mVibrator.hasFrequencyControl()) {
|
||||
return createChirpVibration(DEFAULT_CHIRP_RAMP_DURATION_MILLIS, insistent);
|
||||
}
|
||||
return createWaveformVibration(mDefaultPattern, insistent);
|
||||
}
|
||||
|
||||
private static VibrationEffect createChirpVibration(int rampDuration, boolean insistent) {
|
||||
VibrationEffect.WaveformBuilder waveformBuilder = VibrationEffect.startWaveform()
|
||||
.addStep(/* amplitude= */ 0, /* frequency= */ -0.85f, /* duration= */ 0)
|
||||
.addRamp(/* amplitude= */ 1, /* frequency= */ -0.25f, rampDuration)
|
||||
.addStep(/* amplitude= */ 1, /* frequency= */ -0.25f, CHIRP_LEVEL_DURATION_MILLIS)
|
||||
.addRamp(/* amplitude= */ 0, /* frequency= */ -0.85f, rampDuration);
|
||||
|
||||
if (insistent) {
|
||||
return waveformBuilder
|
||||
.addStep(/* amplitude= */ 0, CHIRP_LEVEL_DURATION_MILLIS)
|
||||
.build(/* repeat= */ 0);
|
||||
}
|
||||
|
||||
VibrationEffect singleBeat = waveformBuilder.build();
|
||||
return VibrationEffect.startComposition()
|
||||
.addEffect(singleBeat)
|
||||
.addEffect(singleBeat, /* delay= */ CHIRP_LEVEL_DURATION_MILLIS)
|
||||
.compose();
|
||||
}
|
||||
|
||||
private static long[] getLongArray(Resources resources, int resId, int maxLength, long[] def) {
|
||||
int[] ar = resources.getIntArray(resId);
|
||||
if (ar == null) {
|
||||
|
||||
Reference in New Issue
Block a user