diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java index 7a947f192263c..0d19a67e86e9f 100644 --- a/services/core/java/com/android/server/VibratorService.java +++ b/services/core/java/com/android/server/VibratorService.java @@ -116,6 +116,7 @@ public class VibratorService extends IVibratorService.Stub private final LinkedList mPreviousRingVibrations; private final LinkedList mPreviousNotificationVibrations; private final LinkedList mPreviousAlarmVibrations; + private final LinkedList mPreviousExternalVibrations; private final LinkedList mPreviousVibrations; private final int mPreviousVibrationsLimit; private final boolean mAllowPriorityVibrationsInLowPowerMode; @@ -368,6 +369,7 @@ public class VibratorService extends IVibratorService.Stub mPreviousNotificationVibrations = new LinkedList<>(); mPreviousAlarmVibrations = new LinkedList<>(); mPreviousVibrations = new LinkedList<>(); + mPreviousExternalVibrations = new LinkedList<>(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_SCREEN_OFF); @@ -1418,6 +1420,12 @@ public class VibratorService extends IVibratorService.Stub pw.print(" "); pw.println(info.toString()); } + + pw.println(" Previous external vibrations:"); + for (ExternalVibration vib : mPreviousExternalVibrations) { + pw.print(" "); + pw.println(vib.toString()); + } } } @@ -1462,6 +1470,10 @@ public class VibratorService extends IVibratorService.Stub // Note that this doesn't support multiple concurrent external controls, as we // would need to mute the old one still if it came from a different controller. mCurrentExternalVibration = vib; + if (mPreviousExternalVibrations.size() > mPreviousVibrationsLimit) { + mPreviousExternalVibrations.removeFirst(); + } + mPreviousExternalVibrations.addLast(vib); if (DEBUG) { Slog.e(TAG, "Playing external vibration: " + vib); }