diff options
| author | 2016-02-27 02:50:04 +0000 | |
|---|---|---|
| committer | 2016-02-27 02:50:07 +0000 | |
| commit | 2362bdf2c73b24ff3589ecd670c3bde366cde45e (patch) | |
| tree | 0124c0fa43eadd167a8e8395959d382159dc275a | |
| parent | 7006b01f5d91c77c9f658d392fb2cc183bc504be (diff) | |
| parent | 7b98e9a7e56213f90665c2c9aec213de8557021b (diff) | |
Merge "Make master mono controlled through settings" into nyc-dev
| -rw-r--r-- | media/java/android/media/AudioManager.java | 43 | ||||
| -rw-r--r-- | media/java/android/media/IAudioService.aidl | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/audio/AudioService.java | 80 |
3 files changed, 15 insertions, 112 deletions
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 38e3b152b68d..7f3b9c21b0f9 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -177,16 +177,6 @@ public class AudioManager { "android.media.MASTER_MUTE_CHANGED_ACTION"; /** - * @hide Broadcast intent when the master mono state changes. - * Includes the new mono state - * - * @see #EXTRA_MASTER_MONO - */ - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) - public static final String MASTER_MONO_CHANGED_ACTION = - "android.media.MASTER_MONO_CHANGED_ACTION"; - - /** * The new vibrate setting for a particular type. * * @see #VIBRATE_SETTING_CHANGED_ACTION @@ -265,13 +255,6 @@ public class AudioManager { "android.media.EXTRA_STREAM_VOLUME_MUTED"; /** - * @hide The new master mono state for the master mono changed intent. - * Value is boolean - */ - public static final String EXTRA_MASTER_MONO = - "android.media.EXTRA_MASTER_MONO"; - - /** * Broadcast Action: Wired Headset plugged in or unplugged. * * You <em>cannot</em> receive this through components declared @@ -898,17 +881,6 @@ public class AudioManager { } } - /** @hide */ - public void setMasterMono(boolean mono) { - IAudioService service = getService(); - try { - service.setMasterMono(mono, getContext().getOpPackageName(), - UserHandle.getCallingUserId()); - } catch (RemoteException e) { - Log.e(TAG, "Dead object in setMasterMono", e); - } - } - /** * Returns the current ringtone mode. * @@ -1171,21 +1143,6 @@ public class AudioManager { } /** - * get master mono state. - * - * @hide - */ - public boolean isMasterMono() { - IAudioService service = getService(); - try { - return service.isMasterMono(); - } catch (RemoteException e) { - Log.e(TAG, "Dead object in isMasterMono", e); - return false; - } - } - - /** * forces the stream controlled by hard volume keys * specifying streamType == -1 releases control to the * logic. diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl index abe92c727cc5..987a8b6a48ee 100644 --- a/media/java/android/media/IAudioService.aidl +++ b/media/java/android/media/IAudioService.aidl @@ -54,10 +54,6 @@ interface IAudioService { void setMasterMute(boolean mute, int flags, String callingPackage, int userId); - boolean isMasterMono(); - - void setMasterMono(boolean mute, String callingPackage, int userId); - int getStreamVolume(int streamType); int getStreamMinVolume(int streamType); diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 548f563bd6af..a3100c820d99 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -222,7 +222,6 @@ public class AudioService extends IAudioService.Stub { 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; - private static final int MSG_PERSIST_MASTER_MONO = 27; // start of messages handled under wakelock // these messages can only be queued, i.e. sent with queueMsgUnderWakeLock(), // and not with sendMsg(..., ..., SENDMSG_QUEUE, ...) @@ -827,10 +826,7 @@ public class AudioService extends IAudioService.Stub { } // Restore mono mode - final boolean masterMono = System.getIntForUser( - mContentResolver, System.MASTER_MONO, - 0 /* default */, UserHandle.USER_CURRENT) == 1; - AudioSystem.setMasterMono(masterMono); + updateMasterMono(mContentResolver); // Restore ringer mode setRingerModeInt(getRingerModeInternal(), false); @@ -1015,6 +1011,16 @@ public class AudioService extends IAudioService.Stub { 0); } + private void updateMasterMono(ContentResolver cr) + { + final boolean masterMono = System.getIntForUser( + cr, System.MASTER_MONO, 0 /* default */, UserHandle.USER_CURRENT) == 1; + if (DEBUG_VOL) { + Log.d(TAG, String.format("Master mono %b", masterMono)); + } + AudioSystem.setMasterMono(masterMono); + } + private void readPersistedSettings() { final ContentResolver cr = mContentResolver; @@ -1091,13 +1097,7 @@ public class AudioService extends IAudioService.Stub { } AudioSystem.muteMicrophone(microphoneMute); - final boolean masterMono = System.getIntForUser( - cr, System.MASTER_MONO, 0 /* default */, UserHandle.USER_CURRENT) == 1; - if (DEBUG_VOL) { - Log.d(TAG, String.format("Master mono %b, user=%d", masterMono, currentUser)); - } - AudioSystem.setMasterMono(masterMono); - broadcastMasterMonoStatus(masterMono); + updateMasterMono(cr); // Each stream will read its own persisted settings @@ -1855,52 +1855,6 @@ public class AudioService extends IAudioService.Stub { userId); } - /** @hide */ - public boolean isMasterMono() { - return AudioSystem.getMasterMono(); - } - - /** @hide */ - public void setMasterMono(boolean mono, String callingPackage, int userId) { - int callingUid = Binder.getCallingUid(); - // If we are being called by the system check for user we are going to change - // so we handle user restrictions correctly. - if (callingUid == android.os.Process.SYSTEM_UID) { - callingUid = UserHandle.getUid(userId, UserHandle.getAppId(callingUid)); - } - - if (userId != UserHandle.getCallingUserId() && - mContext.checkCallingOrSelfPermission( - android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) - != PackageManager.PERMISSION_GRANTED) { - return; - } - if (DEBUG_VOL) { - Log.d(TAG, String.format("Master mono %b, user=%d", mono, userId)); - } - - if (getCurrentUserId() == userId) { - if (mono != AudioSystem.getMasterMono()) { - AudioSystem.setMasterMono(mono); - // Post a persist master mono msg - sendMsg(mAudioHandler, MSG_PERSIST_MASTER_MONO, SENDMSG_REPLACE, mono ? 1 - : 0 /* value */, userId, null /* obj */, 0 /* delay */); - // notify apps and settings - broadcastMasterMonoStatus(mono); - } - } else { - // Post a persist master mono msg - sendMsg(mAudioHandler, MSG_PERSIST_MASTER_MONO, SENDMSG_REPLACE, mono ? 1 - : 0 /* value */, userId, null /* obj */, 0 /* delay */); - } - } - - private void broadcastMasterMonoStatus(boolean mono) { - Intent intent = new Intent(AudioManager.MASTER_MONO_CHANGED_ACTION); - intent.putExtra(AudioManager.EXTRA_MASTER_MONO, mono); - sendBroadcastToAll(intent); - } - /** @see AudioManager#getStreamVolume(int) */ public int getStreamVolume(int streamType) { ensureValidStreamType(streamType); @@ -4641,13 +4595,6 @@ public class AudioService extends IAudioService.Stub { case MSG_DYN_POLICY_MIX_STATE_UPDATE: onDynPolicyMixStateUpdate((String) msg.obj, msg.arg1); break; - - case MSG_PERSIST_MASTER_MONO: - Settings.System.putIntForUser(mContentResolver, - Settings.System.MASTER_MONO, - msg.arg1 /* value */, - msg.arg2 /* userHandle */); - break; } } } @@ -4660,6 +4607,8 @@ public class AudioService extends IAudioService.Stub { Settings.System.MODE_RINGER_STREAMS_AFFECTED), false, this); mContentResolver.registerContentObserver(Settings.Global.getUriFor( Settings.Global.DOCK_AUDIO_MEDIA_ENABLED), false, this); + mContentResolver.registerContentObserver(Settings.System.getUriFor( + Settings.System.MASTER_MONO), false, this); } @Override @@ -4678,6 +4627,7 @@ public class AudioService extends IAudioService.Stub { setRingerModeInt(getRingerModeInternal(), false); } readDockAudioSettings(mContentResolver); + updateMasterMono(mContentResolver); } } } |