Merge "Ignore non-repeating vibrations in favor of repeating vibrations." into oc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
33238f213f
@@ -373,12 +373,24 @@ public class VibratorService extends IVibratorService.Stub
|
||||
if (mCurrentVibration.hasLongerTimeout(newOneShot.getTiming())
|
||||
&& newOneShot.getAmplitude() == currentOneShot.getAmplitude()) {
|
||||
if (DEBUG) {
|
||||
Slog.e(TAG, "Ignoring incoming vibration in favor of current vibration");
|
||||
Slog.d(TAG, "Ignoring incoming vibration in favor of current vibration");
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// If the current vibration is repeating and the incoming one is non-repeating, then ignore
|
||||
// the non-repeating vibration. This is so that we don't cancel vibrations that are meant
|
||||
// to grab the attention of the user, like ringtones and alarms, in favor of one-shot
|
||||
// vibrations that are likely quite short.
|
||||
if (!isRepeatingVibration(effect)
|
||||
&& mCurrentVibration != null && isRepeatingVibration(mCurrentVibration.mEffect)) {
|
||||
if (DEBUG) {
|
||||
Slog.d(TAG, "Ignoring incoming vibration in favor of alarm vibration");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Vibration vib = new Vibration(token, effect, usageHint, uid, opPkg);
|
||||
|
||||
// Only link against waveforms since they potentially don't have a finish if
|
||||
@@ -404,6 +416,16 @@ public class VibratorService extends IVibratorService.Stub
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isRepeatingVibration(VibrationEffect effect) {
|
||||
if (effect instanceof VibrationEffect.Waveform) {
|
||||
final VibrationEffect.Waveform waveform = (VibrationEffect.Waveform) effect;
|
||||
if (waveform.getRepeatIndex() >= 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void addToPreviousVibrationsLocked(Vibration vib) {
|
||||
if (mPreviousVibrations.size() > mPreviousVibrationsLimit) {
|
||||
mPreviousVibrations.removeFirst();
|
||||
|
||||
Reference in New Issue
Block a user