Merge "Bring back the old-style Ring/Vibrate/Silent states when using volume keys." into ics-mr0

This commit is contained in:
Amith Yamasani
2011-10-28 18:59:11 -07:00
committed by Android (Google) Code Review
9 changed files with 35 additions and 12 deletions

View File

@ -352,6 +352,10 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
sc.seekbarView.setProgress(mAudioManager.getLastAudibleStreamVolume(sc.streamType)); sc.seekbarView.setProgress(mAudioManager.getLastAudibleStreamVolume(sc.streamType));
final boolean muted = isMuted(sc.streamType); final boolean muted = isMuted(sc.streamType);
sc.icon.setImageResource(muted ? sc.iconMuteRes : sc.iconRes); 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); sc.seekbarView.setEnabled(!muted);
} }
@ -695,8 +699,14 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
expand(); expand();
} else if (v.getTag() instanceof StreamControl) { } else if (v.getTag() instanceof StreamControl) {
StreamControl sc = (StreamControl) v.getTag(); StreamControl sc = (StreamControl) v.getTag();
mAudioManager.setRingerMode(mAudioManager.isSilentMode() boolean vibeInSilent = Settings.System.getInt(mContext.getContentResolver(),
? AudioManager.RINGER_MODE_NORMAL : AudioManager.RINGER_MODE_SILENT); 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. // Expand the dialog if it hasn't been expanded yet.
if (mShowCombinedVolumes && !isExpanded()) expand(); if (mShowCombinedVolumes && !isExpanded()) expand();
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -16,6 +16,10 @@
package android.media; 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.ActivityManagerNative;
import android.app.KeyguardManager; import android.app.KeyguardManager;
import android.app.PendingIntent; import android.app.PendingIntent;
@ -528,8 +532,8 @@ public class AudioService extends IAudioService.Stub {
(!mVoiceCapable && streamType != AudioSystem.STREAM_VOICE_CALL && (!mVoiceCapable && streamType != AudioSystem.STREAM_VOICE_CALL &&
streamType != AudioSystem.STREAM_BLUETOOTH_SCO) || streamType != AudioSystem.STREAM_BLUETOOTH_SCO) ||
(mVoiceCapable && streamTypeAlias == AudioSystem.STREAM_RING)) { (mVoiceCapable && streamTypeAlias == AudioSystem.STREAM_RING)) {
// do not vibrate if already in silent mode // do not vibrate if already in vibrate mode
if (mRingerMode != AudioManager.RINGER_MODE_NORMAL) { if (mRingerMode == AudioManager.RINGER_MODE_VIBRATE) {
flags &= ~AudioManager.FLAG_VIBRATE; flags &= ~AudioManager.FLAG_VIBRATE;
} }
// Check if the ringer mode changes with this volume adjustment. If // Check if the ringer mode changes with this volume adjustment. If
@ -1621,26 +1625,36 @@ public class AudioService extends IAudioService.Stub {
boolean adjustVolumeIndex = true; boolean adjustVolumeIndex = true;
int newRingerMode = mRingerMode; int newRingerMode = mRingerMode;
int uiIndex = (oldIndex + 5) / 10; 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)) { if ((direction == AudioManager.ADJUST_LOWER) && (uiIndex <= 1)) {
// enter silent mode if current index is the last audible one and not repeating a // enter silent mode if current index is the last audible one and not repeating a
// volume key down // volume key down
if (mPrevVolDirection != AudioManager.ADJUST_LOWER) { if (vibeInSilent || mPrevVolDirection != AudioManager.ADJUST_LOWER) {
// "silent mode", but which one? // "silent mode", but which one?
newRingerMode = System.getInt(mContentResolver, System.VIBRATE_IN_SILENT, 1) == 1 newRingerMode = vibeInSilent ? RINGER_MODE_VIBRATE : RINGER_MODE_SILENT;
? AudioManager.RINGER_MODE_VIBRATE
: AudioManager.RINGER_MODE_SILENT;
} }
if (uiIndex == 0 || (mPrevVolDirection == AudioManager.ADJUST_LOWER && if (uiIndex == 0 || (mPrevVolDirection == AudioManager.ADJUST_LOWER &&
mVoiceCapable && streamType == AudioSystem.STREAM_RING)) { mVoiceCapable && streamType == AudioSystem.STREAM_RING)) {
adjustVolumeIndex = false; 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 { } else {
if (direction == AudioManager.ADJUST_RAISE) { if (direction == AudioManager.ADJUST_RAISE) {
// exiting silent mode // 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; adjustVolumeIndex = false;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 872 B

After

Width:  |  Height:  |  Size: 912 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 640 B

After

Width:  |  Height:  |  Size: 598 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -121,10 +121,9 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
R.string.global_action_silent_mode_off_status) { R.string.global_action_silent_mode_off_status) {
void willCreate() { void willCreate() {
// XXX: FIXME: Add vibrate indicator when available
mEnabledIconResId = (Settings.System.getInt(mContext.getContentResolver(), mEnabledIconResId = (Settings.System.getInt(mContext.getContentResolver(),
Settings.System.VIBRATE_IN_SILENT, 1) == 1) 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; : R.drawable.ic_audio_vol_mute;
} }