diff --git a/res/values/strings.xml b/res/values/strings.xml
index ea5cab4e384..1380386cf37 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1591,6 +1591,9 @@
Notifications
Alarms
+
+ Vibrate when ringing
Dock
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index d7c692fdc13..e9c9a6133ed 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -58,6 +58,11 @@
android:persistent="false"
android:ringtoneType="notification" />
+
+
diff --git a/src/com/android/settings/SoundSettings.java b/src/com/android/settings/SoundSettings.java
index 59e40df778b..4b9d975c670 100644
--- a/src/com/android/settings/SoundSettings.java
+++ b/src/com/android/settings/SoundSettings.java
@@ -56,7 +56,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements
private static final int FALLBACK_EMERGENCY_TONE_VALUE = 0;
private static final String KEY_SILENT_MODE = "silent_mode";
- private static final String KEY_VIBRATE = "vibrate_on_ring";
+ private static final String KEY_VIBRATE = "vibrate_when_ringing";
private static final String KEY_RING_VOLUME = "ring_volume";
private static final String KEY_MUSICFX = "musicfx";
private static final String KEY_DTMF_TONE = "dtmf_tone";
@@ -81,6 +81,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements
private static final int MSG_UPDATE_RINGTONE_SUMMARY = 1;
private static final int MSG_UPDATE_NOTIFICATION_SUMMARY = 2;
+ private CheckBoxPreference mVibrateWhenRinging;
private ListPreference mSilentMode;
private CheckBoxPreference mDtmfTone;
private CheckBoxPreference mSoundEffects;
@@ -141,6 +142,11 @@ public class SoundSettings extends SettingsPreferenceFragment implements
mSilentMode.setOnPreferenceChangeListener(this);
}
+ mVibrateWhenRinging = (CheckBoxPreference) findPreference(KEY_VIBRATE);
+ mVibrateWhenRinging.setPersistent(false);
+ mVibrateWhenRinging.setChecked(Settings.System.getInt(resolver,
+ Settings.System.VIBRATE_WHEN_RINGING, 0) != 0);
+
mDtmfTone = (CheckBoxPreference) findPreference(KEY_DTMF_TONE);
mDtmfTone.setPersistent(false);
mDtmfTone.setChecked(Settings.System.getInt(resolver,
@@ -161,7 +167,9 @@ public class SoundSettings extends SettingsPreferenceFragment implements
mRingtonePreference = findPreference(KEY_RINGTONE);
mNotificationPreference = findPreference(KEY_NOTIFICATION_SOUND);
- if (!((Vibrator) getSystemService(Context.VIBRATOR_SERVICE)).hasVibrator()) {
+ Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
+ if (vibrator == null || !vibrator.hasVibrator()) {
+ getPreferenceScreen().removePreference(mVibrateWhenRinging);
getPreferenceScreen().removePreference(mHapticFeedback);
}
@@ -294,7 +302,10 @@ public class SoundSettings extends SettingsPreferenceFragment implements
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
- if (preference == mDtmfTone) {
+ if (preference == mVibrateWhenRinging) {
+ Settings.System.putInt(getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING,
+ mVibrateWhenRinging.isChecked() ? 1 : 0);
+ } else if (preference == mDtmfTone) {
Settings.System.putInt(getContentResolver(), Settings.System.DTMF_TONE_WHEN_DIALING,
mDtmfTone.isChecked() ? 1 : 0);