Merge "Bring back the old-style Ring/Vibrate/Silent states when using volume keys." into ics-mr0
@ -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();
|
||||||
}
|
}
|
||||||
|
BIN
core/res/res/drawable-hdpi/ic_audio_ring_notif_vibrate.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
core/res/res/drawable-mdpi/ic_audio_ring_notif_vibrate.png
Normal file
After Width: | Height: | Size: 905 B |
BIN
core/res/res/drawable-xhdpi/ic_audio_ring_notif_vibrate.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
@ -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;
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 872 B After Width: | Height: | Size: 912 B |
Before Width: | Height: | Size: 640 B After Width: | Height: | Size: 598 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB |
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|