summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2012-06-02 12:46:28 +0200
committerDanny Baumann <dannybaumann@web.de>2012-06-07 11:32:49 +0200
commit8c0e7112c6622d79b1573668901933397031ec65 (patch)
tree4753bb83a8160cc8e349b29baee29891a8da8094
parentcebdb5fb70b83345aab6c4ca8a1da7aa9b954664 (diff)
downloadframeworks_base-8c0e7112c6622d79b1573668901933397031ec65.zip
frameworks_base-8c0e7112c6622d79b1573668901933397031ec65.tar.gz
frameworks_base-8c0e7112c6622d79b1573668901933397031ec65.tar.bz2
Restore ringer mode properly after cancelling dialog.
-rw-r--r--core/java/android/preference/VolumePreference.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/core/java/android/preference/VolumePreference.java b/core/java/android/preference/VolumePreference.java
index 978637b..ff8c9c8 100644
--- a/core/java/android/preference/VolumePreference.java
+++ b/core/java/android/preference/VolumePreference.java
@@ -172,6 +172,7 @@ public class VolumePreference extends SeekBarPreference implements
public static class VolumeStore {
public int volume = -1;
public int originalVolume = -1;
+ public int originalRingerMode = -1;
}
private static class SavedState extends BaseSavedState {
@@ -181,6 +182,7 @@ public class VolumePreference extends SeekBarPreference implements
super(source);
mVolumeStore.volume = source.readInt();
mVolumeStore.originalVolume = source.readInt();
+ mVolumeStore.originalRingerMode = source.readInt();
}
@Override
@@ -188,6 +190,7 @@ public class VolumePreference extends SeekBarPreference implements
super.writeToParcel(dest, flags);
dest.writeInt(mVolumeStore.volume);
dest.writeInt(mVolumeStore.originalVolume);
+ dest.writeInt(mVolumeStore.originalRingerMode);
}
VolumeStore getVolumeStore() {
@@ -221,6 +224,7 @@ public class VolumePreference extends SeekBarPreference implements
private AudioManager mAudioManager;
private int mStreamType;
private int mOriginalStreamVolume;
+ private int mOriginalRingerMode;
private Ringtone mRingtone;
private int mLastProgress = -1;
@@ -254,6 +258,7 @@ public class VolumePreference extends SeekBarPreference implements
private void initSeekBar(SeekBar seekBar) {
seekBar.setMax(mAudioManager.getStreamMaxVolume(mStreamType));
mOriginalStreamVolume = mAudioManager.getStreamVolume(mStreamType);
+ mOriginalRingerMode = mAudioManager.getRingerMode();
seekBar.setProgress(mOriginalStreamVolume);
seekBar.setOnSeekBarChangeListener(this);
@@ -284,6 +289,7 @@ public class VolumePreference extends SeekBarPreference implements
public void revertVolume() {
mAudioManager.setStreamVolume(mStreamType, mOriginalStreamVolume, 0);
+ mAudioManager.setRingerMode(mOriginalRingerMode);
}
public void onProgressChanged(SeekBar seekBar, int progress,
@@ -315,11 +321,15 @@ public class VolumePreference extends SeekBarPreference implements
int newStreamVolume = mLastProgress;
if (mStreamType == AudioManager.STREAM_RING) {
int ringerMode = mAudioManager.getRingerMode();
- int vibrateSetting = mAudioManager.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER);
if (mLastProgress == 0) {
if (ringerMode == AudioManager.RINGER_MODE_NORMAL) {
- mAudioManager.setRingerMode(vibrateSetting==AudioManager.VIBRATE_SETTING_OFF?AudioManager.RINGER_MODE_SILENT:AudioManager.RINGER_MODE_VIBRATE);
+ int vibrateSetting = mAudioManager.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER);
+ if (vibrateSetting == AudioManager.VIBRATE_SETTING_OFF) {
+ mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
+ } else {
+ mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
+ }
}
} else if (ringerMode != AudioManager.RINGER_MODE_NORMAL) {
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
@@ -356,6 +366,7 @@ public class VolumePreference extends SeekBarPreference implements
if (mLastProgress >= 0) {
volumeStore.volume = mLastProgress;
volumeStore.originalVolume = mOriginalStreamVolume;
+ volumeStore.originalRingerMode = mOriginalRingerMode;
}
}
@@ -363,6 +374,7 @@ public class VolumePreference extends SeekBarPreference implements
if (volumeStore.volume != -1) {
mOriginalStreamVolume = volumeStore.originalVolume;
mLastProgress = volumeStore.volume;
+ mOriginalRingerMode = volumeStore.originalRingerMode;
postSetVolume(mLastProgress);
}
}