summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorJohn Spurlock <jspurlock@google.com>2014-11-28 15:29:21 -0500
committerJohn Spurlock <jspurlock@google.com>2014-11-28 15:29:21 -0500
commitbcc1087af40a0e1bb35dbe8a39c830ecdea8280b (patch)
treecc9fe7f9a741efef1c7e450db6ff9930a0788530 /media
parentc1de25d8ebaecff697c1d5dfaa445e18ee07fa2d (diff)
downloadframeworks_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.java11
-rw-r--r--media/java/android/media/AudioService.java28
-rw-r--r--media/java/android/media/IVolumeController.aidl2
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);
}