diff options
| -rwxr-xr-x | core/java/android/provider/Settings.java | 22 | ||||
| -rw-r--r-- | services/core/java/com/android/server/audio/AudioService.java | 78 |
2 files changed, 25 insertions, 75 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index d4ff766c6063..69df2445cb69 100755 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -2723,24 +2723,6 @@ public final class Settings { public static final String VOLUME_MASTER = "volume_master"; /** - * Master volume mute (int 1 = mute, 0 = not muted). - * - * @hide - */ - public static final String VOLUME_MASTER_MUTE = "volume_master_mute"; - - private static final Validator VOLUME_MASTER_MUTE_VALIDATOR = sBooleanValidator; - - /** - * Microphone mute (int 1 = mute, 0 = not muted). - * - * @hide - */ - public static final String MICROPHONE_MUTE = "microphone_mute"; - - private static final Validator MICROPHONE_MUTE_VALIDATOR = sBooleanValidator; - - /** * Master mono (int 1 = mono, 0 = normal). * * @hide @@ -3530,8 +3512,6 @@ public final class Settings { PRIVATE_SETTINGS.add(SCREEN_AUTO_BRIGHTNESS_ADJ); PRIVATE_SETTINGS.add(VIBRATE_INPUT_DEVICES); PRIVATE_SETTINGS.add(VOLUME_MASTER); - PRIVATE_SETTINGS.add(VOLUME_MASTER_MUTE); - PRIVATE_SETTINGS.add(MICROPHONE_MUTE); PRIVATE_SETTINGS.add(MASTER_MONO); PRIVATE_SETTINGS.add(NOTIFICATIONS_USE_RING_VOLUME); PRIVATE_SETTINGS.add(VIBRATE_IN_SILENT); @@ -3609,8 +3589,6 @@ public final class Settings { VALIDATORS.put(ADVANCED_SETTINGS, ADVANCED_SETTINGS_VALIDATOR); VALIDATORS.put(SCREEN_AUTO_BRIGHTNESS_ADJ, SCREEN_AUTO_BRIGHTNESS_ADJ_VALIDATOR); VALIDATORS.put(VIBRATE_INPUT_DEVICES, VIBRATE_INPUT_DEVICES_VALIDATOR); - VALIDATORS.put(VOLUME_MASTER_MUTE, VOLUME_MASTER_MUTE_VALIDATOR); - VALIDATORS.put(MICROPHONE_MUTE, MICROPHONE_MUTE_VALIDATOR); VALIDATORS.put(MASTER_MONO, MASTER_MONO_VALIDATOR); VALIDATORS.put(NOTIFICATIONS_USE_RING_VOLUME, NOTIFICATIONS_USE_RING_VOLUME_VALIDATOR); VALIDATORS.put(VIBRATE_IN_SILENT, VIBRATE_IN_SILENT_VALIDATOR); diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index d919737c28e2..d6ff9c296110 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -206,7 +206,6 @@ public class AudioService extends IAudioService.Stub { private static final int MSG_SET_FORCE_USE = 8; private static final int MSG_BT_HEADSET_CNCT_FAILED = 9; private static final int MSG_SET_ALL_VOLUMES = 10; - private static final int MSG_PERSIST_MASTER_VOLUME_MUTE = 11; private static final int MSG_REPORT_NEW_ROUTES = 12; private static final int MSG_SET_FORCE_BT_A2DP_USE = 13; private static final int MSG_CHECK_MUSIC_ACTIVE = 14; @@ -218,7 +217,6 @@ public class AudioService extends IAudioService.Stub { private static final int MSG_UNLOAD_SOUND_EFFECTS = 20; private static final int MSG_SYSTEM_READY = 21; private static final int MSG_PERSIST_MUSIC_ACTIVE_MS = 22; - private static final int MSG_PERSIST_MICROPHONE_MUTE = 23; private static final int MSG_UNMUTE_STREAM = 24; private static final int MSG_DYN_POLICY_MIX_STATE_UPDATE = 25; private static final int MSG_INDICATE_SYSTEM_READY = 26; @@ -665,6 +663,7 @@ public class AudioService extends IAudioService.Stub { // array initialized by updateStreamVolumeAlias() updateStreamVolumeAlias(false /*updateVolumes*/, TAG); readPersistedSettings(); + readUserRestrictions(); mSettingsObserver = new SettingsObserver(); createStreamStates(); @@ -1109,14 +1108,27 @@ public class AudioService extends IAudioService.Stub { System.MUTE_STREAMS_AFFECTED, AudioSystem.DEFAULT_MUTE_STREAMS_AFFECTED, UserHandle.USER_CURRENT); + updateMasterMono(cr); + + // Each stream will read its own persisted settings + + // Broadcast the sticky intents + broadcastRingerMode(AudioManager.RINGER_MODE_CHANGED_ACTION, mRingerModeExternal); + broadcastRingerMode(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION, mRingerMode); + + // Broadcast vibrate settings + broadcastVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER); + broadcastVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION); + + // Load settings for the volume controller + mVolumeController.loadSettings(cr); + } + + private void readUserRestrictions() { final int currentUser = getCurrentUserId(); - // In addition to checking the system setting, also check the current user restriction. - // Because of the delay before persisting VOLUME_MASTER_MUTE, there's a window where - // DISALLOW_ADJUST_VOLUME will be ignored when it's set right before switching users. - boolean masterMute = (System.getIntForUser(cr, System.VOLUME_MASTER_MUTE, - 0, UserHandle.USER_CURRENT) == 1) - || mUserManagerInternal.getUserRestriction( + // Check the current user restriction. + boolean masterMute = mUserManagerInternal.getUserRestriction( currentUser, UserManager.DISALLOW_ADJUST_VOLUME); if (mUseFixedVolume) { masterMute = false; @@ -1129,29 +1141,12 @@ public class AudioService extends IAudioService.Stub { AudioSystem.setMasterMute(masterMute); broadcastMasterMuteStatus(masterMute); - boolean microphoneMute = - (System.getIntForUser(cr, System.MICROPHONE_MUTE, 0, UserHandle.USER_CURRENT) == 1) - || mUserManagerInternal.getUserRestriction( - currentUser, UserManager.DISALLOW_UNMUTE_MICROPHONE); + boolean microphoneMute = mUserManagerInternal.getUserRestriction( + currentUser, UserManager.DISALLOW_UNMUTE_MICROPHONE); if (DEBUG_VOL) { Log.d(TAG, String.format("Mic mute %s, user=%d", microphoneMute, currentUser)); } AudioSystem.muteMicrophone(microphoneMute); - - updateMasterMono(cr); - - // Each stream will read its own persisted settings - - // Broadcast the sticky intents - broadcastRingerMode(AudioManager.RINGER_MODE_CHANGED_ACTION, mRingerModeExternal); - broadcastRingerMode(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION, mRingerMode); - - // Broadcast vibrate settings - broadcastVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER); - broadcastVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION); - - // Load settings for the volume controller - mVolumeController.loadSettings(cr); } private int rescaleIndex(int index, int srcStream, int dstStream) { @@ -1869,20 +1864,12 @@ public class AudioService extends IAudioService.Stub { if (mute != AudioSystem.getMasterMute()) { setSystemAudioMute(mute); AudioSystem.setMasterMute(mute); - // Post a persist master volume msg - sendMsg(mAudioHandler, MSG_PERSIST_MASTER_VOLUME_MUTE, SENDMSG_REPLACE, mute ? 1 - : 0, userId, null, PERSIST_DELAY); sendMasterMuteUpdate(mute, flags); Intent intent = new Intent(AudioManager.MASTER_MUTE_CHANGED_ACTION); intent.putExtra(AudioManager.EXTRA_MASTER_VOLUME_MUTED, mute); sendBroadcastToAll(intent); } - } else { - // If not the current user just persist the setting which will be loaded - // on user switch. - sendMsg(mAudioHandler, MSG_PERSIST_MASTER_VOLUME_MUTE, SENDMSG_REPLACE, mute ? 1 - : 0, userId, null, PERSIST_DELAY); } } @@ -1975,8 +1962,6 @@ public class AudioService extends IAudioService.Stub { AudioSystem.muteMicrophone(on); } // Post a persist microphone msg. - sendMsg(mAudioHandler, MSG_PERSIST_MICROPHONE_MUTE, SENDMSG_REPLACE, on ? 1 - : 0, userId, null, PERSIST_DELAY); } @Override @@ -2560,6 +2545,7 @@ public class AudioService extends IAudioService.Stub { private void readAudioSettings(boolean userSwitch) { // restore ringer mode, ringer mode affected streams, mute affected streams and vibrate settings readPersistedSettings(); + readUserRestrictions(); // restore volume settings int numStreamTypes = AudioSystem.getNumStreamTypes(); @@ -4492,16 +4478,6 @@ public class AudioService extends IAudioService.Stub { persistVolume((VolumeStreamState) msg.obj, msg.arg1); break; - case MSG_PERSIST_MASTER_VOLUME_MUTE: - if (mUseFixedVolume) { - return; - } - Settings.System.putIntForUser(mContentResolver, - Settings.System.VOLUME_MASTER_MUTE, - msg.arg1, - msg.arg2); - break; - case MSG_PERSIST_RINGER_MODE: // note that the value persisted is the current ringer mode, not the // value of ringer mode as of the time the request was made to persist @@ -4624,15 +4600,11 @@ public class AudioService extends IAudioService.Stub { Settings.Secure.UNSAFE_VOLUME_MUSIC_ACTIVE_MS, musicActiveMs, UserHandle.USER_CURRENT); break; - case MSG_PERSIST_MICROPHONE_MUTE: - Settings.System.putIntForUser(mContentResolver, - Settings.System.MICROPHONE_MUTE, - msg.arg1, - msg.arg2); - break; + case MSG_UNMUTE_STREAM: onUnmuteStream(msg.arg1, msg.arg2); break; + case MSG_DYN_POLICY_MIX_STATE_UPDATE: onDynPolicyMixStateUpdate((String) msg.obj, msg.arg1); break; |