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:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user