summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Spurlock <jspurlock@google.com>2014-12-10 19:22:41 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-12-10 19:22:41 +0000
commit24ca556dcea46d21045485626a82e9c1ad244bd6 (patch)
tree82c04e72d244313319ce92b59a030e98155b693d
parentd52589185f57ce7eb633d12dec98e4bbae4e33fd (diff)
parente03e245610c7f406a6cc0de998d71313a285953a (diff)
downloadframeworks_base-24ca556dcea46d21045485626a82e9c1ad244bd6.zip
frameworks_base-24ca556dcea46d21045485626a82e9c1ad244bd6.tar.gz
frameworks_base-24ca556dcea46d21045485626a82e9c1ad244bd6.tar.bz2
am e03e2456: Merge "NoMan: Apply audio restrictions when effects are disabled by listeners." into lmp-mr1-dev
* commit 'e03e245610c7f406a6cc0de998d71313a285953a': NoMan: Apply audio restrictions when effects are disabled by listeners.
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java1
-rw-r--r--services/core/java/com/android/server/notification/ZenModeHelper.java45
2 files changed, 31 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index bb99916..650f0e2 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -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));
}
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index 012e22f..31d5cd7 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -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;
@@ -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;
@@ -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;
@@ -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) {
@@ -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 {