Merge "Adding checks for null to TextToSpeechSettings to handle cases where the plugin fails to return properly from CheckVoiceData and GetSampleString."
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2d9cbdc..3afe481 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -995,6 +995,12 @@
     <!-- Sound settings screen, setting option summary text when check box is clear -->
     <string name="sound_effects_enable_summary_off">Play sound when making screen selection</string>
     <!-- Sound settings screen, setting check box label -->
+    <string name="lock_sounds_enable_title">Screen lock sounds</string>
+    <!-- Sound settings screen, setting option summary text when check box is selected -->
+    <string name="lock_sounds_enable_summary_on">Play sounds when locking and unlocking the screen</string>
+    <!-- Sound settings screen, setting option summary text when check box is clear -->
+    <string name="lock_sounds_enable_summary_off">Play sounds when locking and unlocking the screen</string>
+    <!-- Sound settings screen, setting check box label -->
     <string name="haptic_feedback_enable_title">Haptic feedback</string>
     <!-- Sound settings screen, setting option summary text when check box is selected -->
     <string name="haptic_feedback_enable_summary_on">Vibrate when pressing soft keys and on certain UI interactions</string>
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index 08ce0d6..e4d80e6 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -90,11 +90,20 @@
                 android:defaultValue="true" />
 
         <CheckBoxPreference
+                android:key="lock_sounds"
+                android:title="@string/lock_sounds_enable_title"
+                android:summaryOn="@string/lock_sounds_enable_summary_on"
+                android:summaryOff="@string/lock_sounds_enable_summary_off"
+                android:dependency="silent"
+                android:order="11"
+                android:defaultValue="true" />
+
+        <CheckBoxPreference
                 android:key="haptic_feedback"
                 android:title="@string/haptic_feedback_enable_title"
                 android:summaryOn="@string/haptic_feedback_enable_summary_on"
                 android:summaryOff="@string/haptic_feedback_enable_summary_off"
-                android:order="11"
+                android:order="12"
                 android:defaultValue="true" />
 
         <ListPreference
diff --git a/src/com/android/settings/SoundSettings.java b/src/com/android/settings/SoundSettings.java
index 52947ac..2070519 100644
--- a/src/com/android/settings/SoundSettings.java
+++ b/src/com/android/settings/SoundSettings.java
@@ -55,6 +55,7 @@
     private static final String KEY_EMERGENCY_TONE = "emergency_tone";
     private static final String KEY_SOUND_SETTINGS = "sound_settings";
     private static final String KEY_NOTIFICATION_PULSE = "notification_pulse";
+    private static final String KEY_LOCK_SOUNDS = "lock_sounds";
 
     private CheckBoxPreference mSilent;
 
@@ -70,6 +71,7 @@
     private CheckBoxPreference mSoundEffects;
     private CheckBoxPreference mHapticFeedback;
     private CheckBoxPreference mNotificationPulse;
+    private CheckBoxPreference mLockSounds;
 
     private AudioManager mAudioManager;
 
@@ -114,6 +116,10 @@
         mHapticFeedback.setPersistent(false);
         mHapticFeedback.setChecked(Settings.System.getInt(resolver,
                 Settings.System.HAPTIC_FEEDBACK_ENABLED, 0) != 0);
+        mLockSounds = (CheckBoxPreference) findPreference(KEY_LOCK_SOUNDS);
+        mLockSounds.setPersistent(false);
+        mLockSounds.setChecked(Settings.System.getInt(resolver,
+                Settings.System.LOCKSCREEN_SOUNDS_ENABLED, 1) != 0);
 
         if (TelephonyManager.PHONE_TYPE_CDMA == activePhoneType) {
             ListPreference emergencyTonePreference =
@@ -221,6 +227,10 @@
             Settings.System.putInt(getContentResolver(), Settings.System.HAPTIC_FEEDBACK_ENABLED,
                     mHapticFeedback.isChecked() ? 1 : 0);
 
+        } else if (preference == mLockSounds) {
+            Settings.System.putInt(getContentResolver(), Settings.System.LOCKSCREEN_SOUNDS_ENABLED,
+                    mLockSounds.isChecked() ? 1 : 0);
+
         } else if (preference == mNotificationPulse) {
             boolean value = mNotificationPulse.isChecked();
             Settings.System.putInt(getContentResolver(),