summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Amith Yamasani <yamasani@google.com> 2011-10-28 17:02:37 -0700
committer Amith Yamasani <yamasani@google.com> 2011-10-28 18:40:43 -0700
commitc696a53d1fe4d61373c5dc64dd057d322da90c8f (patch)
tree52999422370ca84ef1fedf1490bd6cfa14c7a96d
parentfe9a2a5471616a3267b30013bce36b13a455c0cd (diff)
Bring back the old-style Ring/Vibrate/Silent states when using volume keys.
In order to completely mute the ringer (no vibrate), introduce an extra state beyond mute, which mutes the vibrator as well, if it was enabled. Bug: 5530217 Change-Id: Ib1f299ee6bbca56c1aa7e1100662591362d08307
-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 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.png
new file mode 100644
index 000000000000..41991067dbcc
--- /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 000000000000..2d99b7695a24
--- /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 000000000000..122c7081c0ee
--- /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 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.png
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
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 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
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 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
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 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;
}