diff --git a/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java b/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java index 0fcb4f340..90b8f10e0 100644 --- a/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java +++ b/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java @@ -28,6 +28,7 @@ public final class AudioAndHapticFeedbackManager { private SettingsValues mSettingsValues; private boolean mSoundOn; + private boolean mDoNotDisturb; private static final AudioAndHapticFeedbackManager sInstance = new AudioAndHapticFeedbackManager(); @@ -67,7 +68,7 @@ public final class AudioAndHapticFeedbackManager { } private boolean reevaluateIfSoundIsOn() { - if (mSettingsValues == null || !mSettingsValues.mSoundOn || mAudioManager == null) { + if (mSettingsValues == null || !mSettingsValues.mSoundOn || mAudioManager == null || mDoNotDisturb) { return false; } return mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_NORMAL; @@ -91,7 +92,7 @@ public final class AudioAndHapticFeedbackManager { } public void performHapticFeedback(final View viewToPerformHapticFeedbackOn) { - if (!mSettingsValues.mVibrateOn) { + if (!mSettingsValues.mVibrateOn || mDoNotDisturb) { return; } if (mSettingsValues.mKeypressVibrationDuration >= 0) { @@ -111,7 +112,8 @@ public final class AudioAndHapticFeedbackManager { mSoundOn = reevaluateIfSoundIsOn(); } - public void onRingerModeChanged() { + public void onRingerModeChanged(boolean doNotDisturb) { + mDoNotDisturb = doNotDisturb; mSoundOn = reevaluateIfSoundIsOn(); } } diff --git a/app/src/main/java/helium314/keyboard/latin/LatinIME.java b/app/src/main/java/helium314/keyboard/latin/LatinIME.java index 285962ecd..bfc3cbf7c 100644 --- a/app/src/main/java/helium314/keyboard/latin/LatinIME.java +++ b/app/src/main/java/helium314/keyboard/latin/LatinIME.java @@ -1853,7 +1853,13 @@ public class LatinIME extends InputMethodService implements public void onReceive(final Context context, final Intent intent) { final String action = intent.getAction(); if (AudioManager.RINGER_MODE_CHANGED_ACTION.equals(action)) { - AudioAndHapticFeedbackManager.getInstance().onRingerModeChanged(); + boolean dnd; + try { + dnd = android.provider.Settings.Global.getInt(context.getContentResolver(), "zen_mode") != 0; + } catch (android.provider.Settings.SettingNotFoundException e) { + dnd = false; + } + AudioAndHapticFeedbackManager.getInstance().onRingerModeChanged(dnd); } } };