Loading media/java/android/media/AudioService.java +35 −23 Original line number Diff line number Diff line Loading @@ -1841,12 +1841,22 @@ public class AudioService extends IAudioService.Stub { } public void setRingerModeExternal(int ringerMode, String caller) { final long identity = Binder.clearCallingIdentity(); try { setRingerMode(ringerMode, caller, true /*external*/); } finally { Binder.restoreCallingIdentity(identity); } } public void setRingerModeInternal(int ringerMode, String caller) { enforceSelfOrSystemUI("setRingerModeInternal"); final long identity = Binder.clearCallingIdentity(); try { setRingerMode(ringerMode, caller, false /*external*/); } finally { Binder.restoreCallingIdentity(identity); } } private void setRingerMode(int ringerMode, String caller, boolean external) { Loading @@ -1860,6 +1870,7 @@ public class AudioService extends IAudioService.Stub { if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) { ringerMode = AudioManager.RINGER_MODE_SILENT; } synchronized (mSettingsLock) { final int ringerModeInternal = getRingerModeInternal(); final int ringerModeExternal = getRingerModeExternal(); if (external) { Loading @@ -1882,6 +1893,7 @@ public class AudioService extends IAudioService.Stub { setRingerModeExt(ringerMode); } } } private void setRingerModeExt(int ringerMode) { synchronized(mSettingsLock) { Loading Loading @@ -1968,10 +1980,10 @@ public class AudioService extends IAudioService.Stub { switch (getVibrateSetting(vibrateType)) { case AudioManager.VIBRATE_SETTING_ON: return getRingerModeInternal() != AudioManager.RINGER_MODE_SILENT; return getRingerModeExternal() != AudioManager.RINGER_MODE_SILENT; case AudioManager.VIBRATE_SETTING_ONLY_SILENT: return getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE; return getRingerModeExternal() == AudioManager.RINGER_MODE_VIBRATE; case AudioManager.VIBRATE_SETTING_OFF: // return false, even for incoming calls Loading services/core/java/com/android/server/notification/NotificationManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -927,7 +927,7 @@ public class NotificationManagerService extends SystemService { Settings.Global.DEVICE_PROVISIONED, 0)) { mDisableNotificationEffects = true; } mZenModeHelper.updateZenMode(); mZenModeHelper.readZenModeFromSetting(); mUserProfiles.updateCache(getContext()); listenForCallState(); Loading services/core/java/com/android/server/notification/ZenModeHelper.java +30 −26 Original line number Diff line number Diff line Loading @@ -221,21 +221,26 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { } public void setZenMode(int zenMode, String reason) { setZenMode(zenMode, reason, true); } private void setZenMode(int zenMode, String reason, boolean setRingerMode) { ZenLog.traceSetZenMode(zenMode, reason); Global.putInt(mContext.getContentResolver(), Global.ZEN_MODE, zenMode); if (mZenMode == zenMode) return; ZenLog.traceUpdateZenMode(mZenMode, zenMode); mZenMode = zenMode; Global.putInt(mContext.getContentResolver(), Global.ZEN_MODE, mZenMode); if (setRingerMode) { applyZenToRingerMode(); } applyRestrictions(); mHandler.postDispatchOnZenModeChanged(); } public void updateZenMode() { final int oldMode = mZenMode; public void readZenModeFromSetting() { final int newMode = Global.getInt(mContext.getContentResolver(), Global.ZEN_MODE, Global.ZEN_MODE_OFF); if (oldMode != newMode) { ZenLog.traceUpdateZenMode(oldMode, newMode); } mZenMode = newMode; applyRestrictions(); onZenUpdated(oldMode, newMode); dispatchOnZenModeChanged(); setZenMode(newMode, "setting"); } private void applyRestrictions() { Loading Loading @@ -297,18 +302,16 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { dispatchOnConfigChanged(); final String val = Integer.toString(mConfig.hashCode()); Global.putString(mContext.getContentResolver(), Global.ZEN_MODE_CONFIG_ETAG, val); updateZenMode(); applyRestrictions(); return true; } private void onZenUpdated(int oldZen, int newZen) { private void applyZenToRingerMode() { if (mAudioManager == null) return; if (oldZen == newZen) return; // force the ringer mode into compliance final int ringerModeInternal = mAudioManager.getRingerModeInternal(); int newRingerModeInternal = ringerModeInternal; switch (newZen) { switch (mZenMode) { case Global.ZEN_MODE_NO_INTERRUPTIONS: if (ringerModeInternal != AudioManager.RINGER_MODE_SILENT) { mPreviousRingerMode = ringerModeInternal; Loading Loading @@ -356,7 +359,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { break; } if (newZen != -1) { mHandler.postSetZenMode(newZen, "ringerModeInternal"); setZenMode(newZen, "ringerModeInternal", false /*setRingerMode*/); } if (isChange || newZen != -1 || ringerModeExternal != ringerModeExternalOut) { Loading Loading @@ -394,7 +397,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { break; } if (newZen != -1) { mHandler.postSetZenMode(newZen, "ringerModeExternal"); setZenMode(newZen, "ringerModeExternal", false /*setRingerMode*/); } ZenLog.traceSetRingerModeExternal(ringerModeOld, ringerModeNew, caller, ringerModeInternal, Loading Loading @@ -516,27 +519,28 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { public void update(Uri uri) { if (ZEN_MODE.equals(uri)) { updateZenMode(); readZenModeFromSetting(); } } } private class H extends Handler { private static final int MSG_SET_ZEN = 1; private static final int MSG_DISPATCH = 1; private H(Looper looper) { super(looper); } private void postSetZenMode(int zen, String reason) { obtainMessage(MSG_SET_ZEN, zen, 0, reason).sendToTarget(); private void postDispatchOnZenModeChanged() { removeMessages(MSG_DISPATCH); sendEmptyMessage(MSG_DISPATCH); } @Override public void handleMessage(Message msg) { switch (msg.what) { case MSG_SET_ZEN: setZenMode(msg.arg1, (String) msg.obj); case MSG_DISPATCH: dispatchOnZenModeChanged(); break; } } Loading Loading
media/java/android/media/AudioService.java +35 −23 Original line number Diff line number Diff line Loading @@ -1841,12 +1841,22 @@ public class AudioService extends IAudioService.Stub { } public void setRingerModeExternal(int ringerMode, String caller) { final long identity = Binder.clearCallingIdentity(); try { setRingerMode(ringerMode, caller, true /*external*/); } finally { Binder.restoreCallingIdentity(identity); } } public void setRingerModeInternal(int ringerMode, String caller) { enforceSelfOrSystemUI("setRingerModeInternal"); final long identity = Binder.clearCallingIdentity(); try { setRingerMode(ringerMode, caller, false /*external*/); } finally { Binder.restoreCallingIdentity(identity); } } private void setRingerMode(int ringerMode, String caller, boolean external) { Loading @@ -1860,6 +1870,7 @@ public class AudioService extends IAudioService.Stub { if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) { ringerMode = AudioManager.RINGER_MODE_SILENT; } synchronized (mSettingsLock) { final int ringerModeInternal = getRingerModeInternal(); final int ringerModeExternal = getRingerModeExternal(); if (external) { Loading @@ -1882,6 +1893,7 @@ public class AudioService extends IAudioService.Stub { setRingerModeExt(ringerMode); } } } private void setRingerModeExt(int ringerMode) { synchronized(mSettingsLock) { Loading Loading @@ -1968,10 +1980,10 @@ public class AudioService extends IAudioService.Stub { switch (getVibrateSetting(vibrateType)) { case AudioManager.VIBRATE_SETTING_ON: return getRingerModeInternal() != AudioManager.RINGER_MODE_SILENT; return getRingerModeExternal() != AudioManager.RINGER_MODE_SILENT; case AudioManager.VIBRATE_SETTING_ONLY_SILENT: return getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE; return getRingerModeExternal() == AudioManager.RINGER_MODE_VIBRATE; case AudioManager.VIBRATE_SETTING_OFF: // return false, even for incoming calls Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -927,7 +927,7 @@ public class NotificationManagerService extends SystemService { Settings.Global.DEVICE_PROVISIONED, 0)) { mDisableNotificationEffects = true; } mZenModeHelper.updateZenMode(); mZenModeHelper.readZenModeFromSetting(); mUserProfiles.updateCache(getContext()); listenForCallState(); Loading
services/core/java/com/android/server/notification/ZenModeHelper.java +30 −26 Original line number Diff line number Diff line Loading @@ -221,21 +221,26 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { } public void setZenMode(int zenMode, String reason) { setZenMode(zenMode, reason, true); } private void setZenMode(int zenMode, String reason, boolean setRingerMode) { ZenLog.traceSetZenMode(zenMode, reason); Global.putInt(mContext.getContentResolver(), Global.ZEN_MODE, zenMode); if (mZenMode == zenMode) return; ZenLog.traceUpdateZenMode(mZenMode, zenMode); mZenMode = zenMode; Global.putInt(mContext.getContentResolver(), Global.ZEN_MODE, mZenMode); if (setRingerMode) { applyZenToRingerMode(); } applyRestrictions(); mHandler.postDispatchOnZenModeChanged(); } public void updateZenMode() { final int oldMode = mZenMode; public void readZenModeFromSetting() { final int newMode = Global.getInt(mContext.getContentResolver(), Global.ZEN_MODE, Global.ZEN_MODE_OFF); if (oldMode != newMode) { ZenLog.traceUpdateZenMode(oldMode, newMode); } mZenMode = newMode; applyRestrictions(); onZenUpdated(oldMode, newMode); dispatchOnZenModeChanged(); setZenMode(newMode, "setting"); } private void applyRestrictions() { Loading Loading @@ -297,18 +302,16 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { dispatchOnConfigChanged(); final String val = Integer.toString(mConfig.hashCode()); Global.putString(mContext.getContentResolver(), Global.ZEN_MODE_CONFIG_ETAG, val); updateZenMode(); applyRestrictions(); return true; } private void onZenUpdated(int oldZen, int newZen) { private void applyZenToRingerMode() { if (mAudioManager == null) return; if (oldZen == newZen) return; // force the ringer mode into compliance final int ringerModeInternal = mAudioManager.getRingerModeInternal(); int newRingerModeInternal = ringerModeInternal; switch (newZen) { switch (mZenMode) { case Global.ZEN_MODE_NO_INTERRUPTIONS: if (ringerModeInternal != AudioManager.RINGER_MODE_SILENT) { mPreviousRingerMode = ringerModeInternal; Loading Loading @@ -356,7 +359,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { break; } if (newZen != -1) { mHandler.postSetZenMode(newZen, "ringerModeInternal"); setZenMode(newZen, "ringerModeInternal", false /*setRingerMode*/); } if (isChange || newZen != -1 || ringerModeExternal != ringerModeExternalOut) { Loading Loading @@ -394,7 +397,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { break; } if (newZen != -1) { mHandler.postSetZenMode(newZen, "ringerModeExternal"); setZenMode(newZen, "ringerModeExternal", false /*setRingerMode*/); } ZenLog.traceSetRingerModeExternal(ringerModeOld, ringerModeNew, caller, ringerModeInternal, Loading Loading @@ -516,27 +519,28 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate { public void update(Uri uri) { if (ZEN_MODE.equals(uri)) { updateZenMode(); readZenModeFromSetting(); } } } private class H extends Handler { private static final int MSG_SET_ZEN = 1; private static final int MSG_DISPATCH = 1; private H(Looper looper) { super(looper); } private void postSetZenMode(int zen, String reason) { obtainMessage(MSG_SET_ZEN, zen, 0, reason).sendToTarget(); private void postDispatchOnZenModeChanged() { removeMessages(MSG_DISPATCH); sendEmptyMessage(MSG_DISPATCH); } @Override public void handleMessage(Message msg) { switch (msg.what) { case MSG_SET_ZEN: setZenMode(msg.arg1, (String) msg.obj); case MSG_DISPATCH: dispatchOnZenModeChanged(); break; } } Loading