summaryrefslogtreecommitdiff
path: root/core/java/android/view/VolumePanel.java
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2011-11-14 10:47:42 -0800
committerMike Lockwood <lockwood@google.com>2012-02-10 14:44:05 -0800
commitce952c8e13c535bedde77bcdb94dfcc7508475aa (patch)
tree7948a36f33d2b847ce14f757161955ff3d178d1a /core/java/android/view/VolumePanel.java
parenta5abdb9e580f7598ae5553f4490d16871453f9f5 (diff)
AudioManager: Add support for master mute
Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'core/java/android/view/VolumePanel.java')
-rw-r--r--core/java/android/view/VolumePanel.java37
1 files changed, 33 insertions, 4 deletions
diff --git a/core/java/android/view/VolumePanel.java b/core/java/android/view/VolumePanel.java
index 193460a44dfa..9152cc344949 100644
--- a/core/java/android/view/VolumePanel.java
+++ b/core/java/android/view/VolumePanel.java
@@ -91,6 +91,7 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
private static final int MSG_VIBRATE = 4;
private static final int MSG_TIMEOUT = 5;
private static final int MSG_RINGER_MODE_CHANGED = 6;
+ private static final int MSG_MUTE_CHANGED = 7;
// Pseudo stream type for master volume
private static final int STREAM_MASTER = -100;
@@ -295,8 +296,7 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
private boolean isMuted(int streamType) {
if (streamType == STREAM_MASTER) {
- // master volume mute not yet supported
- return false;
+ return mAudioService.isMasterMute();
} else {
return mAudioService.isStreamMute(streamType);
}
@@ -328,8 +328,7 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
private int getLastAudibleStreamVolume(int streamType) {
if (streamType == STREAM_MASTER) {
- // master volume mute not yet supported
- return getStreamVolume(STREAM_MASTER);
+ return mAudioService.getLastAudibleMasterVolume();
} else {
return mAudioService.getLastAudibleStreamVolume(streamType);
}
@@ -452,6 +451,19 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
postVolumeChanged(STREAM_MASTER, flags);
}
+ public void postMuteChanged(int streamType, int flags) {
+ if (hasMessages(MSG_VOLUME_CHANGED)) return;
+ if (mStreamControls == null) {
+ createSliders();
+ }
+ removeMessages(MSG_FREE_RESOURCES);
+ obtainMessage(MSG_MUTE_CHANGED, streamType, flags).sendToTarget();
+ }
+
+ public void postMasterMuteChanged(int flags) {
+ postMuteChanged(STREAM_MASTER, flags);
+ }
+
/**
* Override this if you have other work to do when the volume changes (for
* example, vibrating, playing a sound, etc.). Make sure to call through to
@@ -485,6 +497,18 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
resetTimeout();
}
+ protected void onMuteChanged(int streamType, int flags) {
+
+ if (LOGD) Log.d(TAG, "onMuteChanged(streamType: " + streamType + ", flags: " + flags + ")");
+
+ StreamControl sc = mStreamControls.get(streamType);
+ if (sc != null) {
+ sc.icon.setImageResource(isMuted(sc.streamType) ? sc.iconMuteRes : sc.iconRes);
+ }
+
+ onVolumeChanged(streamType, flags);
+ }
+
protected void onShowVolumeChanged(int streamType, int flags) {
int index = isMuted(streamType) ?
getLastAudibleStreamVolume(streamType)
@@ -683,6 +707,11 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
break;
}
+ case MSG_MUTE_CHANGED: {
+ onMuteChanged(msg.arg1, msg.arg2);
+ break;
+ }
+
case MSG_FREE_RESOURCES: {
onFreeResources();
break;