summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/VolumePanel.java14
-rw-r--r--core/res/res/drawable-hdpi/ic_audio_ring_notif_vibrate.pngbin0 -> 1309 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_audio_ring_notif_vibrate.pngbin0 -> 905 bytes
-rw-r--r--core/res/res/drawable-xhdpi/ic_audio_ring_notif_vibrate.pngbin0 -> 1840 bytes
-rw-r--r--media/java/android/media/AudioService.java30
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_ringer_vibrate.pngbin872 -> 912 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_ringer_vibrate.pngbin640 -> 598 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_ringer_vibrate.pngbin1130 -> 1228 bytes
-rw-r--r--policy/src/com/android/internal/policy/impl/GlobalActions.java3
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
new file mode 100644
index 0000000..4199106
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_audio_ring_notif_vibrate.png
Binary files differ
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
new file mode 100644
index 0000000..2d99b76
--- /dev/null
+++ b/core/res/res/drawable-mdpi/ic_audio_ring_notif_vibrate.png
Binary files differ
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
new file mode 100644
index 0000000..122c708
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/ic_audio_ring_notif_vibrate.png
Binary files differ
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
index 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
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_ringer_vibrate.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_ringer_vibrate.png
index 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
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_ringer_vibrate.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_ringer_vibrate.png
index 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
Binary files differ
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;
}