diff --git a/src/main/java/eu/siacs/conversations/services/NotificationService.java b/src/main/java/eu/siacs/conversations/services/NotificationService.java index a4eec7fb1857e58300a9ad8ca1e1db8ab0d349d9..6ccd2b74f90678b7a8da07267ccaa4707648cba7 100644 --- a/src/main/java/eu/siacs/conversations/services/NotificationService.java +++ b/src/main/java/eu/siacs/conversations/services/NotificationService.java @@ -410,12 +410,16 @@ public class NotificationService { Log.d(Config.LOGTAG,"do not ring or vibrate because interruption filter has been set to "+currentInterruptionFilter); return; } + final ScheduledFuture currentVibrationFuture = this.vibrationFuture; this.vibrationFuture = SCHEDULED_EXECUTOR_SERVICE.scheduleAtFixedRate( new VibrationRunnable(), 0, 3, TimeUnit.SECONDS ); + if (currentVibrationFuture != null) { + currentVibrationFuture.cancel(true); + } final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mXmppConnectionService); final Resources resources = mXmppConnectionService.getResources(); final String ringtonePreference = preferences.getString("call_ringtone", resources.getString(R.string.incoming_call_ringtone));