Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4a7a9b96 authored by Daniel Sandler's avatar Daniel Sandler
Browse files

DEFAULT_VIBRATE must always use the default vibe pattern

The logic here was backwards, causing the (softer) fallback vibe
pattern to be applied if the notification specified a sound
(or DEFAULT_SOUND) and also DEFAULT_VIBRATE. The fallback
vibe should only play if you have *no* vibration set.

Bug: 7588655
Change-Id: Iecdd362729bccedf779b51cc9b90a12014328aff
parent 2656abe0
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1128,13 +1128,13 @@ public class NotificationManagerService extends INotificationManager.Stub
                final boolean hasCustomVibrate = notification.vibrate != null;

                // new in 4.2: if there was supposed to be a sound and we're in vibrate mode,
                // and no other vibration is specified, we apply the default vibration anyway
                // and no other vibration is specified, we fall back to vibration
                final boolean convertSoundToVibration =
                           !hasCustomVibrate
                        && hasValidSound
                        && (audioManager.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE);

                // The DEFAULT_VIBRATE flag trumps any custom vibration.
                // The DEFAULT_VIBRATE flag trumps any custom vibration AND the fallback.
                final boolean useDefaultVibrate =
                        (notification.defaults & Notification.DEFAULT_VIBRATE) != 0;

@@ -1147,8 +1147,8 @@ public class NotificationManagerService extends INotificationManager.Stub
                        // does not have the VIBRATE permission.
                        long identity = Binder.clearCallingIdentity();
                        try {
                            mVibrator.vibrate(convertSoundToVibration ? mFallbackVibrationPattern
                                                                      : mDefaultVibrationPattern,
                            mVibrator.vibrate(useDefaultVibrate ? mDefaultVibrationPattern
                                                                : mFallbackVibrationPattern,
                                ((notification.flags & Notification.FLAG_INSISTENT) != 0) ? 0: -1);
                        } finally {
                            Binder.restoreCallingIdentity(identity);