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 83df8a5b3522..b657204d02fa 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.pngBinary files differ new file mode 100644 index 000000000000..41991067dbcc --- /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.pngBinary files differ new file mode 100644 index 000000000000..2d99b7695a24 --- /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.pngBinary files differ new file mode 100644 index 000000000000..122c7081c0ee --- /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 1d20e248ed66..25a37058a0be 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.pngBinary files differ index cbd9b873315d..72e682193634 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.pngBinary files differ index faefe36d0cd7..900a717b5c85 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.pngBinary files differ index a8e8e0f99ad0..d2d03cd8b1d0 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 11b6c15185d3..f040e87b7bae 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;              } |