diff options
author | John Spurlock <jspurlock@google.com> | 2014-11-28 15:29:21 -0500 |
---|---|---|
committer | John Spurlock <jspurlock@google.com> | 2014-11-28 15:29:21 -0500 |
commit | bcc1087af40a0e1bb35dbe8a39c830ecdea8280b (patch) | |
tree | cc9fe7f9a741efef1c7e450db6ff9930a0788530 /media | |
parent | c1de25d8ebaecff697c1d5dfaa445e18ee07fa2d (diff) | |
download | frameworks_base-bcc1087af40a0e1bb35dbe8a39c830ecdea8280b.zip frameworks_base-bcc1087af40a0e1bb35dbe8a39c830ecdea8280b.tar.gz frameworks_base-bcc1087af40a0e1bb35dbe8a39c830ecdea8280b.tar.bz2 |
Volume: Improve inline volume controls used in settings.
- Make the system internal ringer mode change signal available to
other system components via a standard intent, instead of a
volume-controller-only binder call.
- Update sysui to use new intent for icon policy.
- Add proper muting state to the volumizer, to look more like
the associated volume panel slider.
- Add basic ringer mode state tracking for the notification-ring
slider setting.
Bug: 17899613
Change-Id: Ie2df52edb070055ef59c74039162a0e785d2fdbb
Diffstat (limited to 'media')
-rw-r--r-- | media/java/android/media/AudioManager.java | 11 | ||||
-rw-r--r-- | media/java/android/media/AudioService.java | 28 | ||||
-rw-r--r-- | media/java/android/media/IVolumeController.aidl | 2 |
3 files changed, 23 insertions, 18 deletions
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 0642bcd..3669986 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -90,6 +90,17 @@ public class AudioManager { public static final String RINGER_MODE_CHANGED_ACTION = "android.media.RINGER_MODE_CHANGED"; /** + * @hide + * Sticky broadcast intent action indicating that the internal ringer mode has + * changed. Includes the new ringer mode. + * + * @see #EXTRA_RINGER_MODE + */ + @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) + public static final String INTERNAL_RINGER_MODE_CHANGED_ACTION = + "android.media.INTERNAL_RINGER_MODE_CHANGED_ACTION"; + + /** * The new ringer mode. * * @see #RINGER_MODE_CHANGED_ACTION diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 0175fd4..7ac079a 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -927,8 +927,9 @@ public class AudioService extends IAudioService.Stub { // Each stream will read its own persisted settings - // Broadcast the sticky intent - broadcastRingerMode(ringerMode); + // 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); @@ -1837,7 +1838,6 @@ public class AudioService extends IAudioService.Stub { } else /*internal*/ { if (ringerMode != ringerModeInternal) { setRingerModeInt(ringerMode, true /*persist*/); - mVolumeController.postInternalRingerModeChanged(ringerMode); } if (mRingerModeDelegate != null) { ringerMode = mRingerModeDelegate.onSetRingerModeInternal(ringerModeInternal, @@ -1853,11 +1853,13 @@ public class AudioService extends IAudioService.Stub { mRingerModeExternal = ringerMode; } // Send sticky broadcast - broadcastRingerMode(ringerMode); + broadcastRingerMode(AudioManager.RINGER_MODE_CHANGED_ACTION, ringerMode); } private void setRingerModeInt(int ringerMode, boolean persist) { + final boolean change; synchronized(mSettingsLock) { + change = mRingerMode != ringerMode; mRingerMode = ringerMode; } @@ -1903,6 +1905,10 @@ public class AudioService extends IAudioService.Stub { sendMsg(mAudioHandler, MSG_PERSIST_RINGER_MODE, SENDMSG_REPLACE, 0, 0, null, PERSIST_DELAY); } + if (change) { + // Send sticky broadcast + broadcastRingerMode(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION, ringerMode); + } } private void restoreMasterVolume() { @@ -3276,9 +3282,9 @@ public class AudioService extends IAudioService.Stub { return suggestedStreamType; } - private void broadcastRingerMode(int ringerMode) { + private void broadcastRingerMode(String action, int ringerMode) { // Send sticky broadcast - Intent broadcast = new Intent(AudioManager.RINGER_MODE_CHANGED_ACTION); + Intent broadcast = new Intent(action); broadcast.putExtra(AudioManager.EXTRA_RINGER_MODE, ringerMode); broadcast.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT | Intent.FLAG_RECEIVER_REPLACE_PENDING); @@ -5711,16 +5717,6 @@ public class AudioService extends IAudioService.Stub { Log.w(TAG, "Error calling dismiss", e); } } - - public void postInternalRingerModeChanged(int mode) { - if (mController == null) - return; - try { - mController.internalRingerModeChanged(mode); - } catch (RemoteException e) { - Log.w(TAG, "Error calling internalRingerModeChanged", e); - } - } } /** diff --git a/media/java/android/media/IVolumeController.aidl b/media/java/android/media/IVolumeController.aidl index c31d80c..e3593a6 100644 --- a/media/java/android/media/IVolumeController.aidl +++ b/media/java/android/media/IVolumeController.aidl @@ -34,6 +34,4 @@ oneway interface IVolumeController { void setLayoutDirection(int layoutDirection); void dismiss(); - - void internalRingerModeChanged(int mode); } |