am e7f301a0: Merge "Audio policy: Fix deprecated shouldVibrate api." into lmp-mr1-dev

* commit 'e7f301a05344376f9065ef09e3b3ef360469bcb3':
  Audio policy: Fix deprecated shouldVibrate api.
This commit is contained in:
John Spurlock
2014-12-17 20:18:03 +00:00
committed by Android Git Automerger
3 changed files with 67 additions and 51 deletions

View File

@@ -1841,12 +1841,22 @@ public class AudioService extends IAudioService.Stub {
}
public void setRingerModeExternal(int ringerMode, String caller) {
setRingerMode(ringerMode, caller, true /*external*/);
final long identity = Binder.clearCallingIdentity();
try {
setRingerMode(ringerMode, caller, true /*external*/);
} finally {
Binder.restoreCallingIdentity(identity);
}
}
public void setRingerModeInternal(int ringerMode, String caller) {
enforceSelfOrSystemUI("setRingerModeInternal");
setRingerMode(ringerMode, caller, false /*external*/);
final long identity = Binder.clearCallingIdentity();
try {
setRingerMode(ringerMode, caller, false /*external*/);
} finally {
Binder.restoreCallingIdentity(identity);
}
}
private void setRingerMode(int ringerMode, String caller, boolean external) {
@@ -1860,26 +1870,28 @@ public class AudioService extends IAudioService.Stub {
if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
ringerMode = AudioManager.RINGER_MODE_SILENT;
}
final int ringerModeInternal = getRingerModeInternal();
final int ringerModeExternal = getRingerModeExternal();
if (external) {
setRingerModeExt(ringerMode);
if (mRingerModeDelegate != null) {
ringerMode = mRingerModeDelegate.onSetRingerModeExternal(ringerModeExternal,
ringerMode, caller, ringerModeInternal);
synchronized (mSettingsLock) {
final int ringerModeInternal = getRingerModeInternal();
final int ringerModeExternal = getRingerModeExternal();
if (external) {
setRingerModeExt(ringerMode);
if (mRingerModeDelegate != null) {
ringerMode = mRingerModeDelegate.onSetRingerModeExternal(ringerModeExternal,
ringerMode, caller, ringerModeInternal);
}
if (ringerMode != ringerModeInternal) {
setRingerModeInt(ringerMode, true /*persist*/);
}
} else /*internal*/ {
if (ringerMode != ringerModeInternal) {
setRingerModeInt(ringerMode, true /*persist*/);
}
if (mRingerModeDelegate != null) {
ringerMode = mRingerModeDelegate.onSetRingerModeInternal(ringerModeInternal,
ringerMode, caller, ringerModeExternal);
}
setRingerModeExt(ringerMode);
}
if (ringerMode != ringerModeInternal) {
setRingerModeInt(ringerMode, true /*persist*/);
}
} else /*internal*/ {
if (ringerMode != ringerModeInternal) {
setRingerModeInt(ringerMode, true /*persist*/);
}
if (mRingerModeDelegate != null) {
ringerMode = mRingerModeDelegate.onSetRingerModeInternal(ringerModeInternal,
ringerMode, caller, ringerModeExternal);
}
setRingerModeExt(ringerMode);
}
}
@@ -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

View File

@@ -927,7 +927,7 @@ public class NotificationManagerService extends SystemService {
Settings.Global.DEVICE_PROVISIONED, 0)) {
mDisableNotificationEffects = true;
}
mZenModeHelper.updateZenMode();
mZenModeHelper.readZenModeFromSetting();
mUserProfiles.updateCache(getContext());
listenForCallState();

View File

@@ -221,21 +221,26 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate {
}
public void setZenMode(int zenMode, String reason) {
ZenLog.traceSetZenMode(zenMode, reason);
Global.putInt(mContext.getContentResolver(), Global.ZEN_MODE, zenMode);
setZenMode(zenMode, reason, true);
}
public void updateZenMode() {
final int oldMode = mZenMode;
private void setZenMode(int zenMode, String reason, boolean setRingerMode) {
ZenLog.traceSetZenMode(zenMode, reason);
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 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() {
@@ -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;
@@ -337,7 +340,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate {
int ringerModeExternalOut = ringerModeNew;
int newZen = -1;
switch(ringerModeNew) {
switch (ringerModeNew) {
case AudioManager.RINGER_MODE_SILENT:
if (isChange) {
if (mZenMode != Global.ZEN_MODE_NO_INTERRUPTIONS) {
@@ -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) {
@@ -374,7 +377,7 @@ public class ZenModeHelper implements AudioManagerInternal.RingerModeDelegate {
final boolean isVibrate = ringerModeInternal == AudioManager.RINGER_MODE_VIBRATE;
int newZen = -1;
switch(ringerModeNew) {
switch (ringerModeNew) {
case AudioManager.RINGER_MODE_SILENT:
if (isChange) {
if (mZenMode == Global.ZEN_MODE_OFF) {
@@ -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,
@@ -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);
switch (msg.what) {
case MSG_DISPATCH:
dispatchOnZenModeChanged();
break;
}
}