am c824a9d4: am 4f7eee43: am 3d4aec1b: am b2344c81: Merge "Leave zen when apps set ringer-mode = non-silent (normal/vibrate)." into lmp-dev

* commit 'c824a9d444bf3a7df5f9003bd839fd609130be9e':
  Leave zen when apps set ringer-mode = non-silent (normal/vibrate).
This commit is contained in:
John Spurlock
2014-10-16 06:54:52 +00:00
committed by Android Git Automerger
4 changed files with 32 additions and 6 deletions

View File

@@ -982,12 +982,21 @@ public class AudioManager {
* @see #isVolumeFixed() * @see #isVolumeFixed()
*/ */
public void setRingerMode(int ringerMode) { public void setRingerMode(int ringerMode) {
setRingerMode(ringerMode, true /*checkZen*/);
}
/**
* @see #setRingerMode(int)
* @param checkZen Update zen mode if necessary to compensate.
* @hide
*/
public void setRingerMode(int ringerMode, boolean checkZen) {
if (!isValidRingerMode(ringerMode)) { if (!isValidRingerMode(ringerMode)) {
return; return;
} }
IAudioService service = getService(); IAudioService service = getService();
try { try {
service.setRingerMode(ringerMode); service.setRingerMode(ringerMode, checkZen);
} catch (RemoteException e) { } catch (RemoteException e) {
Log.e(TAG, "Dead object in setRingerMode", e); Log.e(TAG, "Dead object in setRingerMode", e);
} }

View File

@@ -66,6 +66,7 @@ import android.os.SystemProperties;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.Vibrator; import android.os.Vibrator;
import android.provider.Settings; import android.provider.Settings;
import android.provider.Settings.Global;
import android.provider.Settings.System; import android.provider.Settings.System;
import android.telecom.TelecomManager; import android.telecom.TelecomManager;
import android.text.TextUtils; import android.text.TextUtils;
@@ -1175,7 +1176,7 @@ public class AudioService extends IAudioService.Stub {
} else { } else {
newRingerMode = AudioManager.RINGER_MODE_NORMAL; newRingerMode = AudioManager.RINGER_MODE_NORMAL;
} }
setRingerMode(newRingerMode); setRingerMode(newRingerMode, false /*checkZen*/);
} }
} }
@@ -1738,7 +1739,7 @@ public class AudioService extends IAudioService.Stub {
} }
/** @see AudioManager#setRingerMode(int) */ /** @see AudioManager#setRingerMode(int) */
public void setRingerMode(int ringerMode) { public void setRingerMode(int ringerMode, boolean checkZen) {
if (mUseFixedVolume || isPlatformTelevision()) { if (mUseFixedVolume || isPlatformTelevision()) {
return; return;
} }
@@ -1746,6 +1747,9 @@ public class AudioService extends IAudioService.Stub {
if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) { if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
ringerMode = AudioManager.RINGER_MODE_SILENT; ringerMode = AudioManager.RINGER_MODE_SILENT;
} }
if (checkZen) {
checkZen(ringerMode);
}
if (ringerMode != getRingerMode()) { if (ringerMode != getRingerMode()) {
setRingerModeInt(ringerMode, true); setRingerModeInt(ringerMode, true);
// Send sticky broadcast // Send sticky broadcast
@@ -1753,6 +1757,19 @@ public class AudioService extends IAudioService.Stub {
} }
} }
private void checkZen(int ringerMode) {
// leave zen when callers set ringer-mode = normal or vibrate
final int zen = Global.getInt(mContentResolver, Global.ZEN_MODE, Global.ZEN_MODE_OFF);
if (ringerMode != AudioManager.RINGER_MODE_SILENT && zen != Global.ZEN_MODE_OFF) {
final long ident = Binder.clearCallingIdentity();
try {
Global.putInt(mContentResolver, Global.ZEN_MODE, Global.ZEN_MODE_OFF);
} finally {
Binder.restoreCallingIdentity(ident);
}
}
}
private void setRingerModeInt(int ringerMode, boolean persist) { private void setRingerModeInt(int ringerMode, boolean persist) {
synchronized(mSettingsLock) { synchronized(mSettingsLock) {
mRingerMode = ringerMode; mRingerMode = ringerMode;
@@ -2993,7 +3010,7 @@ public class AudioService extends IAudioService.Stub {
break; break;
} }
setRingerMode(ringerMode); setRingerMode(ringerMode, false /*checkZen*/);
mPrevVolDirection = direction; mPrevVolDirection = direction;

View File

@@ -76,7 +76,7 @@ interface IAudioService {
void setMicrophoneMute(boolean on, String callingPackage); void setMicrophoneMute(boolean on, String callingPackage);
void setRingerMode(int ringerMode); void setRingerMode(int ringerMode, boolean checkZen);
int getRingerMode(); int getRingerMode();

View File

@@ -260,7 +260,7 @@ public class ZenModeHelper {
} }
} }
if (forcedRingerMode != -1) { if (forcedRingerMode != -1) {
mAudioManager.setRingerMode(forcedRingerMode); mAudioManager.setRingerMode(forcedRingerMode, false /*checkZen*/);
ZenLog.traceSetRingerMode(forcedRingerMode); ZenLog.traceSetRingerMode(forcedRingerMode);
} }
} }