From a48d779dad4c48aa2f97ad021ae3a5649c058312 Mon Sep 17 00:00:00 2001 From: John Spurlock Date: Tue, 3 Mar 2015 17:35:57 -0500 Subject: Volume policy updates. - Make volume policy settable by the volume UI instead of hardcoded in AudioService. - Add status bar icon for silent mode. - Limit unmute-on-volume-adjust behavior to tvs. - Ensure all changes to device volume are sent through setIndex so no change events are missed. Bug: 19260237 Change-Id: Iea070a7a6f90ff620e39629f2da3f33f87223d72 --- .../res/drawable/stat_sys_ringer_silent.xml | 27 ++++++++++++++++++++++ .../statusbar/phone/PhoneStatusBarPolicy.java | 7 +++++- .../src/com/android/systemui/volume/VolumeUI.java | 2 ++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 packages/SystemUI/res/drawable/stat_sys_ringer_silent.xml (limited to 'packages/SystemUI') diff --git a/packages/SystemUI/res/drawable/stat_sys_ringer_silent.xml b/packages/SystemUI/res/drawable/stat_sys_ringer_silent.xml new file mode 100644 index 0000000..36e6cef --- /dev/null +++ b/packages/SystemUI/res/drawable/stat_sys_ringer_silent.xml @@ -0,0 +1,27 @@ + + + + + + diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java index 5da8457..2236aae 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java @@ -213,7 +213,12 @@ public class PhoneStatusBarPolicy { zenDescription = mContext.getString(R.string.zen_important_interruptions); } - if (mZen != Global.ZEN_MODE_NO_INTERRUPTIONS && + if (DndTile.isVisible(mContext) + && audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) { + volumeVisible = true; + volumeIconId = R.drawable.stat_sys_ringer_silent; + volumeDescription = mContext.getString(R.string.accessibility_ringer_silent); + } else if (mZen != Global.ZEN_MODE_NO_INTERRUPTIONS && audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) { volumeVisible = true; volumeIconId = R.drawable.stat_sys_ringer_vibrate; diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java index 7603c7d..687452d 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java @@ -31,6 +31,7 @@ import android.content.res.Configuration; import android.media.AudioManager; import android.media.IRemoteVolumeController; import android.media.IVolumeController; +import android.media.VolumePolicy; import android.media.session.ISessionController; import android.media.session.MediaController; import android.media.session.MediaSessionManager; @@ -114,6 +115,7 @@ public class VolumeUI extends SystemUI { if (register) { if (LOGD) Log.d(TAG, "Registering default volume controller"); mAudioManager.setVolumeController(mVolumeController); + mAudioManager.setVolumePolicy(VolumePolicy.DEFAULT); mMediaSessionManager.setRemoteVolumeController(mRemoteVolumeController); DndTile.setVisible(mContext, false); } else { -- cgit v1.1