diff options
-rw-r--r-- | core/java/android/view/VolumePanel.java | 14 | ||||
-rw-r--r-- | core/res/res/drawable-hdpi/ic_audio_ring_notif_vibrate.png | bin | 0 -> 1309 bytes | |||
-rw-r--r-- | core/res/res/drawable-mdpi/ic_audio_ring_notif_vibrate.png | bin | 0 -> 905 bytes | |||
-rw-r--r-- | core/res/res/drawable-xhdpi/ic_audio_ring_notif_vibrate.png | bin | 0 -> 1840 bytes | |||
-rw-r--r-- | media/java/android/media/AudioService.java | 30 | ||||
-rw-r--r-- | packages/SystemUI/res/drawable-hdpi/stat_sys_ringer_vibrate.png | bin | 872 -> 912 bytes | |||
-rw-r--r-- | packages/SystemUI/res/drawable-mdpi/stat_sys_ringer_vibrate.png | bin | 640 -> 598 bytes | |||
-rw-r--r-- | packages/SystemUI/res/drawable-xhdpi/stat_sys_ringer_vibrate.png | bin | 1130 -> 1228 bytes | |||
-rw-r--r-- | policy/src/com/android/internal/policy/impl/GlobalActions.java | 3 |
9 files changed, 35 insertions, 12 deletions
diff --git a/core/java/android/view/VolumePanel.java b/core/java/android/view/VolumePanel.java index 83df8a5..b657204 100644 --- a/core/java/android/view/VolumePanel.java +++ b/core/java/android/view/VolumePanel.java @@ -352,6 +352,10 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie sc.seekbarView.setProgress(mAudioManager.getLastAudibleStreamVolume(sc.streamType)); final boolean muted = isMuted(sc.streamType); sc.icon.setImageResource(muted ? sc.iconMuteRes : sc.iconRes); + if (sc.streamType == AudioManager.STREAM_RING && muted + && mAudioManager.shouldVibrate(AudioManager.VIBRATE_TYPE_RINGER)) { + sc.icon.setImageResource(R.drawable.ic_audio_ring_notif_vibrate); + } sc.seekbarView.setEnabled(!muted); } @@ -695,8 +699,14 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie expand(); } else if (v.getTag() instanceof StreamControl) { StreamControl sc = (StreamControl) v.getTag(); - mAudioManager.setRingerMode(mAudioManager.isSilentMode() - ? AudioManager.RINGER_MODE_NORMAL : AudioManager.RINGER_MODE_SILENT); + boolean vibeInSilent = Settings.System.getInt(mContext.getContentResolver(), + System.VIBRATE_IN_SILENT, 1) == 1; + int newMode = mAudioManager.isSilentMode() + ? AudioManager.RINGER_MODE_NORMAL + : (vibeInSilent + ? AudioManager.RINGER_MODE_VIBRATE + : AudioManager.RINGER_MODE_SILENT); + mAudioManager.setRingerMode(newMode); // Expand the dialog if it hasn't been expanded yet. if (mShowCombinedVolumes && !isExpanded()) expand(); } diff --git a/core/res/res/drawable-hdpi/ic_audio_ring_notif_vibrate.png b/core/res/res/drawable-hdpi/ic_audio_ring_notif_vibrate.png Binary files differnew file mode 100644 index 0000000..4199106 --- /dev/null +++ b/core/res/res/drawable-hdpi/ic_audio_ring_notif_vibrate.png diff --git a/core/res/res/drawable-mdpi/ic_audio_ring_notif_vibrate.png b/core/res/res/drawable-mdpi/ic_audio_ring_notif_vibrate.png Binary files differnew file mode 100644 index 0000000..2d99b76 --- /dev/null +++ b/core/res/res/drawable-mdpi/ic_audio_ring_notif_vibrate.png diff --git a/core/res/res/drawable-xhdpi/ic_audio_ring_notif_vibrate.png b/core/res/res/drawable-xhdpi/ic_audio_ring_notif_vibrate.png Binary files differnew file mode 100644 index 0000000..122c708 --- /dev/null +++ b/core/res/res/drawable-xhdpi/ic_audio_ring_notif_vibrate.png diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 1d20e24..25a3705 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -16,6 +16,10 @@ package android.media; +import static android.media.AudioManager.RINGER_MODE_NORMAL; +import static android.media.AudioManager.RINGER_MODE_SILENT; +import static android.media.AudioManager.RINGER_MODE_VIBRATE; + import android.app.ActivityManagerNative; import android.app.KeyguardManager; import android.app.PendingIntent; @@ -528,8 +532,8 @@ public class AudioService extends IAudioService.Stub { (!mVoiceCapable && streamType != AudioSystem.STREAM_VOICE_CALL && streamType != AudioSystem.STREAM_BLUETOOTH_SCO) || (mVoiceCapable && streamTypeAlias == AudioSystem.STREAM_RING)) { - // do not vibrate if already in silent mode - if (mRingerMode != AudioManager.RINGER_MODE_NORMAL) { + // do not vibrate if already in vibrate mode + if (mRingerMode == AudioManager.RINGER_MODE_VIBRATE) { flags &= ~AudioManager.FLAG_VIBRATE; } // Check if the ringer mode changes with this volume adjustment. If @@ -1621,26 +1625,36 @@ public class AudioService extends IAudioService.Stub { boolean adjustVolumeIndex = true; int newRingerMode = mRingerMode; int uiIndex = (oldIndex + 5) / 10; + boolean vibeInSilent = System.getInt(mContentResolver, System.VIBRATE_IN_SILENT, 1) == 1; - if (mRingerMode == AudioManager.RINGER_MODE_NORMAL) { + if (mRingerMode == RINGER_MODE_NORMAL) { if ((direction == AudioManager.ADJUST_LOWER) && (uiIndex <= 1)) { // enter silent mode if current index is the last audible one and not repeating a // volume key down - if (mPrevVolDirection != AudioManager.ADJUST_LOWER) { + if (vibeInSilent || mPrevVolDirection != AudioManager.ADJUST_LOWER) { // "silent mode", but which one? - newRingerMode = System.getInt(mContentResolver, System.VIBRATE_IN_SILENT, 1) == 1 - ? AudioManager.RINGER_MODE_VIBRATE - : AudioManager.RINGER_MODE_SILENT; + newRingerMode = vibeInSilent ? RINGER_MODE_VIBRATE : RINGER_MODE_SILENT; } if (uiIndex == 0 || (mPrevVolDirection == AudioManager.ADJUST_LOWER && mVoiceCapable && streamType == AudioSystem.STREAM_RING)) { adjustVolumeIndex = false; } } + } else if (mRingerMode == RINGER_MODE_VIBRATE) { + if ((direction == AudioManager.ADJUST_LOWER)) { + // Set it to silent, if it wasn't a long-press + if (mPrevVolDirection != AudioManager.ADJUST_LOWER) { + newRingerMode = RINGER_MODE_SILENT; + } + } else if (direction == AudioManager.ADJUST_RAISE) { + newRingerMode = RINGER_MODE_NORMAL; + } + adjustVolumeIndex = false; } else { if (direction == AudioManager.ADJUST_RAISE) { // exiting silent mode - newRingerMode = AudioManager.RINGER_MODE_NORMAL; + // If VIBRATE_IN_SILENT, then go into vibrate mode + newRingerMode = vibeInSilent ? RINGER_MODE_VIBRATE : RINGER_MODE_NORMAL; } adjustVolumeIndex = false; } diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_ringer_vibrate.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_ringer_vibrate.png Binary files differindex cbd9b87..72e6821 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_sys_ringer_vibrate.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_ringer_vibrate.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_ringer_vibrate.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_ringer_vibrate.png Binary files differindex faefe36..900a717 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_sys_ringer_vibrate.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_ringer_vibrate.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_ringer_vibrate.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_ringer_vibrate.png Binary files differindex a8e8e0f..d2d03cd 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_ringer_vibrate.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_ringer_vibrate.png diff --git a/policy/src/com/android/internal/policy/impl/GlobalActions.java b/policy/src/com/android/internal/policy/impl/GlobalActions.java index 11b6c15..f040e87 100644 --- a/policy/src/com/android/internal/policy/impl/GlobalActions.java +++ b/policy/src/com/android/internal/policy/impl/GlobalActions.java @@ -121,10 +121,9 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac R.string.global_action_silent_mode_off_status) { void willCreate() { - // XXX: FIXME: Add vibrate indicator when available mEnabledIconResId = (Settings.System.getInt(mContext.getContentResolver(), Settings.System.VIBRATE_IN_SILENT, 1) == 1) - ? R.drawable.ic_audio_vol_mute + ? R.drawable.ic_audio_ring_notif_vibrate : R.drawable.ic_audio_vol_mute; } |