Fix vibrate and silent mode toggle dependency.

This commit is contained in:
Amith Yamasani
2009-07-07 11:37:08 -07:00
parent c4a3bf94cc
commit eb72bcd6d0

View File

@@ -216,33 +216,29 @@ public class SoundAndDisplaySettings extends PreferenceActivity implements
Settings.System.ACCELEROMETER_ROTATION, 0) != 0); Settings.System.ACCELEROMETER_ROTATION, 0) != 0);
} }
private void setRingerMode(boolean silent, boolean vibrate) {
if (silent) {
mAudioManager.setRingerMode(vibrate ? AudioManager.RINGER_MODE_VIBRATE :
AudioManager.RINGER_MODE_SILENT);
} else {
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
vibrate ? AudioManager.VIBRATE_SETTING_ON
: AudioManager.VIBRATE_SETTING_OFF);
}
}
@Override @Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference == mSilent) { if (preference == mSilent || preference == mVibrate) {
final boolean silent = mSilent.isChecked(); setRingerMode(mSilent.isChecked(), mVibrate.isChecked());
mAudioManager.setRingerMode(silent ? AudioManager.RINGER_MODE_SILENT if (preference == mSilent) updateState(false);
: AudioManager.RINGER_MODE_NORMAL);
updateState(false);
} else if (preference == mPlayMediaNotificationSounds) { } else if (preference == mPlayMediaNotificationSounds) {
try { try {
mMountService.setPlayNotificationSounds(mPlayMediaNotificationSounds.isChecked()); mMountService.setPlayNotificationSounds(mPlayMediaNotificationSounds.isChecked());
} catch (RemoteException e) { } catch (RemoteException e) {
} }
} else if (preference == mVibrate) {
final boolean vibrate = mVibrate.isChecked();
final boolean silent = mSilent.isChecked();
if (silent) {
mAudioManager.setRingerMode(vibrate ? AudioManager.RINGER_MODE_VIBRATE :
AudioManager.RINGER_MODE_SILENT);
} else {
mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
vibrate ? AudioManager.VIBRATE_SETTING_ON
: AudioManager.VIBRATE_SETTING_OFF);
}
} else if (preference == mDtmfTone) { } else if (preference == mDtmfTone) {
Settings.System.putInt(getContentResolver(), Settings.System.DTMF_TONE_WHEN_DIALING, Settings.System.putInt(getContentResolver(), Settings.System.DTMF_TONE_WHEN_DIALING,
mDtmfTone.isChecked() ? 1 : 0); mDtmfTone.isChecked() ? 1 : 0);