Fix VibratorManager cmd for on-off waveforms

The VibrationEffect.WaveformBuilder.addSustain does not accept zero
duration sustain periods, so adding an extra check to the
VibratorManager ShellCommand implementation to handle on-off patterns
with zero entries.

Bug: 224930189
Test: manual
Change-Id: Ie1b8f15a0e7b029ebf78a2affce1c12455f08418
This commit is contained in:
Lais Andrade
2022-03-28 17:30:28 +01:00
parent 9519e3c94a
commit bc491a649c

View File

@@ -1852,6 +1852,9 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
Duration transitionDuration = isContinuous
? Duration.ofMillis(durations.get(i))
: Duration.ZERO;
Duration sustainDuration = isContinuous
? Duration.ZERO
: Duration.ofMillis(durations.get(i));
if (hasFrequencies) {
waveform.addTransition(transitionDuration, targetAmplitude(amplitudes.get(i)),
@@ -1859,8 +1862,10 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
} else {
waveform.addTransition(transitionDuration, targetAmplitude(amplitudes.get(i)));
}
if (!isContinuous) {
waveform.addSustain(Duration.ofMillis(durations.get(i)));
if (!sustainDuration.isZero()) {
// Add sustain only takes positive durations. Skip this since we already
// did a transition to the desired values (even when duration is zero).
waveform.addSustain(sustainDuration);
}
if ((i > 0) && (i == repeat)) {