Loading services/core/java/com/android/server/notification/NotificationManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -1028,6 +1028,7 @@ public class NotificationManagerService extends SystemService { ? mListenersDisablingEffects.valueAt(0).component : null; if (Objects.equals(suppressor, mEffectsSuppressor)) return; mEffectsSuppressor = suppressor; mZenModeHelper.setEffectsSuppressed(suppressor != null); getContext().sendBroadcast(new Intent(NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED) .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)); } Loading services/core/java/com/android/server/notification/ZenModeHelper.java +30 −15 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.notification; import static android.media.AudioAttributes.USAGE_ALARM; import static android.media.AudioAttributes.USAGE_NOTIFICATION; import static android.media.AudioAttributes.USAGE_NOTIFICATION_RINGTONE; import android.app.AppOpsManager; Loading Loading @@ -77,6 +78,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { private ZenModeConfig mConfig; private AudioManagerInternal mAudioManager; private int mPreviousRingerMode = -1; private boolean mEffectsSuppressed; public ZenModeHelper(Context context, Looper looper) { mContext = context; Loading Loading @@ -153,6 +155,12 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { } } public void setEffectsSuppressed(boolean effectsSuppressed) { if (mEffectsSuppressed == effectsSuppressed) return; mEffectsSuppressed = effectsSuppressed; applyRestrictions(); } public boolean shouldIntercept(NotificationRecord record) { if (isSystem(record)) { return false; Loading Loading @@ -225,29 +233,35 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { ZenLog.traceUpdateZenMode(oldMode, newMode); } mZenMode = newMode; applyRestrictions(); onZenUpdated(oldMode, newMode); dispatchOnZenModeChanged(); } private void applyRestrictions() { final boolean zen = mZenMode != Global.ZEN_MODE_OFF; final String[] exceptionPackages = null; // none (for now) // notification restrictions final boolean muteNotifications = mEffectsSuppressed; applyRestrictions(muteNotifications, USAGE_NOTIFICATION); // call restrictions final boolean muteCalls = zen && !mConfig.allowCalls; mAppOps.setRestriction(AppOpsManager.OP_VIBRATE, USAGE_NOTIFICATION_RINGTONE, muteCalls ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, exceptionPackages); mAppOps.setRestriction(AppOpsManager.OP_PLAY_AUDIO, USAGE_NOTIFICATION_RINGTONE, muteCalls ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, exceptionPackages); final boolean muteCalls = zen && !mConfig.allowCalls || mEffectsSuppressed; applyRestrictions(muteCalls, USAGE_NOTIFICATION_RINGTONE); // alarm restrictions final boolean muteAlarms = mZenMode == Global.ZEN_MODE_NO_INTERRUPTIONS; mAppOps.setRestriction(AppOpsManager.OP_VIBRATE, USAGE_ALARM, muteAlarms ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, applyRestrictions(muteAlarms, USAGE_ALARM); } private void applyRestrictions(boolean mute, int usage) { final String[] exceptionPackages = null; // none (for now) mAppOps.setRestriction(AppOpsManager.OP_VIBRATE, usage, mute ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, exceptionPackages); mAppOps.setRestriction(AppOpsManager.OP_PLAY_AUDIO, USAGE_ALARM, muteAlarms ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, mAppOps.setRestriction(AppOpsManager.OP_PLAY_AUDIO, usage, mute ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, exceptionPackages); onZenUpdated(oldMode, newMode); dispatchOnZenModeChanged(); } public void dump(PrintWriter pw, String prefix) { Loading @@ -257,6 +271,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { pw.print(prefix); pw.print("mDefaultConfig="); pw.println(mDefaultConfig); pw.print(prefix); pw.print("mPreviousRingerMode="); pw.println(mPreviousRingerMode); pw.print(prefix); pw.print("mDefaultPhoneApp="); pw.println(mDefaultPhoneApp); pw.print(prefix); pw.print("mEffectsSuppressed="); pw.println(mEffectsSuppressed); } public void readXml(XmlPullParser parser) throws XmlPullParserException, IOException { Loading Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -1028,6 +1028,7 @@ public class NotificationManagerService extends SystemService { ? mListenersDisablingEffects.valueAt(0).component : null; if (Objects.equals(suppressor, mEffectsSuppressor)) return; mEffectsSuppressor = suppressor; mZenModeHelper.setEffectsSuppressed(suppressor != null); getContext().sendBroadcast(new Intent(NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED) .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)); } Loading
services/core/java/com/android/server/notification/ZenModeHelper.java +30 −15 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.notification; import static android.media.AudioAttributes.USAGE_ALARM; import static android.media.AudioAttributes.USAGE_NOTIFICATION; import static android.media.AudioAttributes.USAGE_NOTIFICATION_RINGTONE; import android.app.AppOpsManager; Loading Loading @@ -77,6 +78,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { private ZenModeConfig mConfig; private AudioManagerInternal mAudioManager; private int mPreviousRingerMode = -1; private boolean mEffectsSuppressed; public ZenModeHelper(Context context, Looper looper) { mContext = context; Loading Loading @@ -153,6 +155,12 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { } } public void setEffectsSuppressed(boolean effectsSuppressed) { if (mEffectsSuppressed == effectsSuppressed) return; mEffectsSuppressed = effectsSuppressed; applyRestrictions(); } public boolean shouldIntercept(NotificationRecord record) { if (isSystem(record)) { return false; Loading Loading @@ -225,29 +233,35 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { ZenLog.traceUpdateZenMode(oldMode, newMode); } mZenMode = newMode; applyRestrictions(); onZenUpdated(oldMode, newMode); dispatchOnZenModeChanged(); } private void applyRestrictions() { final boolean zen = mZenMode != Global.ZEN_MODE_OFF; final String[] exceptionPackages = null; // none (for now) // notification restrictions final boolean muteNotifications = mEffectsSuppressed; applyRestrictions(muteNotifications, USAGE_NOTIFICATION); // call restrictions final boolean muteCalls = zen && !mConfig.allowCalls; mAppOps.setRestriction(AppOpsManager.OP_VIBRATE, USAGE_NOTIFICATION_RINGTONE, muteCalls ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, exceptionPackages); mAppOps.setRestriction(AppOpsManager.OP_PLAY_AUDIO, USAGE_NOTIFICATION_RINGTONE, muteCalls ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, exceptionPackages); final boolean muteCalls = zen && !mConfig.allowCalls || mEffectsSuppressed; applyRestrictions(muteCalls, USAGE_NOTIFICATION_RINGTONE); // alarm restrictions final boolean muteAlarms = mZenMode == Global.ZEN_MODE_NO_INTERRUPTIONS; mAppOps.setRestriction(AppOpsManager.OP_VIBRATE, USAGE_ALARM, muteAlarms ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, applyRestrictions(muteAlarms, USAGE_ALARM); } private void applyRestrictions(boolean mute, int usage) { final String[] exceptionPackages = null; // none (for now) mAppOps.setRestriction(AppOpsManager.OP_VIBRATE, usage, mute ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, exceptionPackages); mAppOps.setRestriction(AppOpsManager.OP_PLAY_AUDIO, USAGE_ALARM, muteAlarms ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, mAppOps.setRestriction(AppOpsManager.OP_PLAY_AUDIO, usage, mute ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED, exceptionPackages); onZenUpdated(oldMode, newMode); dispatchOnZenModeChanged(); } public void dump(PrintWriter pw, String prefix) { Loading @@ -257,6 +271,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { pw.print(prefix); pw.print("mDefaultConfig="); pw.println(mDefaultConfig); pw.print(prefix); pw.print("mPreviousRingerMode="); pw.println(mPreviousRingerMode); pw.print(prefix); pw.print("mDefaultPhoneApp="); pw.println(mDefaultPhoneApp); pw.print(prefix); pw.print("mEffectsSuppressed="); pw.println(mEffectsSuppressed); } public void readXml(XmlPullParser parser) throws XmlPullParserException, IOException { Loading