am 8e79fda8: am ad76f17a: Remove regulatory group setting in advanced wifi setting

Merge commit '8e79fda826f78afe063763183d31398cdee5ac84'

* commit '8e79fda826f78afe063763183d31398cdee5ac84':
  Remove regulatory group setting in advanced wifi setting
diff --git a/Android.mk b/Android.mk
index dedda01..d70d1ce 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,7 +1,7 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
-LOCAL_MODULE_TAGS := user
+LOCAL_MODULE_TAGS := optional
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d260b33..0b6d011 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2,8 +2,8 @@
         package="com.android.settings"
         android:sharedUserId="android.uid.system">
 
-    <uses-permission android:name="com.google.android.providers.gmail.permission.WRITE_GMAIL" />
-    <uses-permission android:name="com.google.android.providers.gmail.permission.READ_GMAIL" />
+    <uses-permission android:name="com.google.android.gm.permission.WRITE_GMAIL" />
+    <uses-permission android:name="com.google.android.gm.permission.READ_GMAIL" />
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
     <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
     <uses-permission android:name="android.permission.DEVICE_POWER" />
@@ -32,7 +32,7 @@
     <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"/>
     <uses-permission android:name="android.permission.READ_USER_DICTIONARY"/>
     <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY"/>
-    <uses-permission android:name="android.permission.RESTART_PACKAGES"/>
+    <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"/>
     <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
     <uses-permission android:name="android.permission.BATTERY_STATS"/>
     <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
@@ -103,6 +103,39 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".wifi.WifiInfo">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".wifi.WifiConfigInfo">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".wifi.WifiAPITest">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".wifi.WifiStatusTest">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+
         <activity android:name="ApnSettings" android:label="@string/apn_settings"
                   android:configChanges="orientation|keyboardHidden"
                   android:launchMode="singleTask"
@@ -216,16 +249,28 @@
             </intent-filter>
         </activity>
 
-        <activity android:name="SoundAndDisplaySettings"
-                android:label="@string/sound_and_display_settings_title"
+        <activity android:name="SoundSettings"
+                android:label="@string/sound_settings"
                 android:clearTaskOnLaunch="true"
                 >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="com.android.settings.SOUND_SETTINGS" />
+                <action android:name="android.settings.SOUND_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
+                <category android:name="com.android.settings.SHORTCUT" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name="DisplaySettings"
+                android:label="@string/display_settings"
+                android:clearTaskOnLaunch="true"
+                >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
                 <action android:name="com.android.settings.DISPLAY_SETTINGS" />
                 <action android:name="android.settings.DISPLAY_SETTINGS" />
-                <action android:name="android.settings.SOUND_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
@@ -249,6 +294,7 @@
                 >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.settings.DEVICE_INFO_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
@@ -334,7 +380,7 @@
         </activity>
 
         <activity android:name="CredentialInstaller"
-                android:label="@string/credential_installer_activity_title">
+                android:theme="@android:style/Theme.Translucent.NoTitleBar">
             <intent-filter>
                 <action android:name="android.credentials.SYSTEM_INSTALL" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -354,6 +400,30 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="DeviceAdminSettings"
+                android:label="@string/device_admin_settings_title"
+                android:theme="@style/TallTitleBarTheme"
+                android:clearTaskOnLaunch="true"
+                >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
+                <category android:name="com.android.settings.SHORTCUT" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name="DeviceAdminAdd"
+                android:label="@string/device_admin_add_title"
+                android:theme="@style/TallTitleBarTheme"
+                android:clearTaskOnLaunch="true"
+                >
+            <intent-filter>
+                <action android:name="android.app.action.ADD_DEVICE_ADMIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
         <activity android:name="IccLockSettings" android:label="@string/sim_lock_settings"
                 android:process="com.android.phone">
             <intent-filter>
@@ -374,6 +444,15 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
+        
+        <activity android:name="VoiceInputOutputSettings"
+                android:label="@string/voice_input_output_settings">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <action android:name="com.android.settings.VOICE_INPUT_OUTPUT_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
 
         <activity android:name="TextToSpeechSettings" android:label="@string/tts_settings">
             <intent-filter>
@@ -386,26 +465,33 @@
         <!-- Second and third-level settings -->
 
         <activity android:name="ConfirmLockPattern"/>
+        <activity android:name="ConfirmLockPassword"
+            android:theme="@android:style/Theme.NoTitleBar">
+        </activity>
 
-        <activity android:name="ChooseLockPattern" android:label="@string/lockpattern_change_lock_pattern_label">
+        <activity android:name="ChooseLockGeneric"
+                android:theme="@android:style/Theme.NoDisplay">
             <intent-filter>
-                <action android:name="android.intent.action.DEFAULT" />
+                <action android:name="android.app.action.SET_NEW_PASSWORD" />
+                <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 
+        <activity android:name="ChooseLockPattern"
+                android:label="@string/lockpattern_change_lock_pattern_label">
+        </activity>
+
+        <activity android:name="ChooseLockPassword"
+                android:label="@string/lockpattern_change_lock_pin_label"
+            android:theme="@android:style/Theme.NoTitleBar">
+        </activity>
+
         <activity android:name="ChooseLockPatternTutorial"
-            android:label="@string/lockpattern_change_lock_pattern_label"
-            >
-            <intent-filter>
-                <action android:name="android.intent.action.DEFAULT" />
-            </intent-filter>
+            android:label="@string/lockpattern_change_lock_pattern_label">
         </activity>
 
         <activity android:name="ChooseLockPatternExample"
             android:label="@string/lockpattern_change_lock_pattern_label">
-            <intent-filter>
-                <action android:name="android.intent.action.DEFAULT" />
-            </intent-filter>
         </activity>
 
         <activity android:name="ZoneList" android:label="@string/choose_timezone" />
@@ -652,12 +738,6 @@
             </intent-filter>
         </activity>
 
-        <!-- Helper to bind any unbound widgets in Launcher, used as
-             part of initialization and upgrade process -->
-        <activity android:name="LauncherAppWidgetBinder"
-                android:permission="android.permission.BIND_APPWIDGET"
-                android:theme="@android:style/Theme.NoDisplay" android:exported="true" />
-
         <activity android:name="UsageStats" android:label="@string/usage_stats_label">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/res/drawable-hdpi/ic_settings_display.png b/res/drawable-hdpi/ic_settings_display.png
index 20568d2..8efbe76 100644
--- a/res/drawable-hdpi/ic_settings_display.png
+++ b/res/drawable-hdpi/ic_settings_display.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_sound_display.png b/res/drawable-hdpi/ic_settings_sound.png
similarity index 100%
rename from res/drawable-hdpi/ic_settings_sound_display.png
rename to res/drawable-hdpi/ic_settings_sound.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_00.png b/res/drawable-hdpi/lock_anim_0.png
similarity index 100%
rename from res/drawable-hdpi/lock_anim_00.png
rename to res/drawable-hdpi/lock_anim_0.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_1.png b/res/drawable-hdpi/lock_anim_1.png
new file mode 100644
index 0000000..74a0628
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_1.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_11.png b/res/drawable-hdpi/lock_anim_11.png
new file mode 100644
index 0000000..f8976a2
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_11.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_13.png b/res/drawable-hdpi/lock_anim_13.png
new file mode 100644
index 0000000..ccd38d5
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_13.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_02.png b/res/drawable-hdpi/lock_anim_2.png
similarity index 100%
rename from res/drawable-hdpi/lock_anim_02.png
rename to res/drawable-hdpi/lock_anim_2.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_3.png b/res/drawable-hdpi/lock_anim_3.png
new file mode 100644
index 0000000..fa37813
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_3.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_04.png b/res/drawable-hdpi/lock_anim_4.png
similarity index 100%
rename from res/drawable-hdpi/lock_anim_04.png
rename to res/drawable-hdpi/lock_anim_4.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_5.png b/res/drawable-hdpi/lock_anim_5.png
new file mode 100644
index 0000000..b08932d
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_5.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_06.png b/res/drawable-hdpi/lock_anim_6.png
similarity index 100%
rename from res/drawable-hdpi/lock_anim_06.png
rename to res/drawable-hdpi/lock_anim_6.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_7.png b/res/drawable-hdpi/lock_anim_7.png
new file mode 100644
index 0000000..f06c9d6
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_7.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_08.png b/res/drawable-hdpi/lock_anim_8.png
similarity index 100%
rename from res/drawable-hdpi/lock_anim_08.png
rename to res/drawable-hdpi/lock_anim_8.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_9.png b/res/drawable-hdpi/lock_anim_9.png
new file mode 100644
index 0000000..551bafa
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_9.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_settings_display.png b/res/drawable-mdpi/ic_settings_display.png
index b676b85..1e5628c 100644
--- a/res/drawable-mdpi/ic_settings_display.png
+++ b/res/drawable-mdpi/ic_settings_display.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_settings_sound_display.png b/res/drawable-mdpi/ic_settings_sound.png
similarity index 100%
rename from res/drawable-mdpi/ic_settings_sound_display.png
rename to res/drawable-mdpi/ic_settings_sound.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_0.png b/res/drawable-mdpi/lock_anim_0.png
new file mode 100644
index 0000000..afdda8b
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_0.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_1.png b/res/drawable-mdpi/lock_anim_1.png
new file mode 100644
index 0000000..6cae8e5
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_1.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_11.png b/res/drawable-mdpi/lock_anim_11.png
new file mode 100644
index 0000000..35db815
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_11.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_13.png b/res/drawable-mdpi/lock_anim_13.png
new file mode 100644
index 0000000..d0b8cf0
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_13.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_2.png b/res/drawable-mdpi/lock_anim_2.png
new file mode 100644
index 0000000..0542b1d
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_2.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_3.png b/res/drawable-mdpi/lock_anim_3.png
new file mode 100644
index 0000000..7e2ba9a
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_3.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_4.png b/res/drawable-mdpi/lock_anim_4.png
new file mode 100644
index 0000000..a3ca629
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_4.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_5.png b/res/drawable-mdpi/lock_anim_5.png
new file mode 100644
index 0000000..17e3839
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_5.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_6.png b/res/drawable-mdpi/lock_anim_6.png
new file mode 100644
index 0000000..90205a6
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_6.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_7.png b/res/drawable-mdpi/lock_anim_7.png
new file mode 100644
index 0000000..1d94a47
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_7.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_8.png b/res/drawable-mdpi/lock_anim_8.png
new file mode 100644
index 0000000..af7cd28
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_8.png
Binary files differ
diff --git a/res/drawable-mdpi/lock_anim_9.png b/res/drawable-mdpi/lock_anim_9.png
new file mode 100644
index 0000000..d401624
--- /dev/null
+++ b/res/drawable-mdpi/lock_anim_9.png
Binary files differ
diff --git a/res/drawable/lock_anim.xml b/res/drawable/lock_anim.xml
index ca1f9d8..8ec31a6 100644
--- a/res/drawable/lock_anim.xml
+++ b/res/drawable/lock_anim.xml
@@ -1,30 +1,37 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-/*
+/* 
 ** Copyright 2008, The Android Open Source Project
 **
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
 **
-**     http://www.apache.org/licenses/LICENSE-2.0
+**     http://www.apache.org/licenses/LICENSE-2.0 
 **
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
 ** limitations under the License.
 */
 -->
 <animation-list
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:oneshot="false">
-    <item android:drawable="@drawable/lock_anim_00" android:duration="400" />
-    <item android:drawable="@drawable/lock_anim_02" android:duration="400" />
-    <item android:drawable="@drawable/lock_anim_04" android:duration="400" />
-    <item android:drawable="@drawable/lock_anim_06" android:duration="400" />
-    <item android:drawable="@drawable/lock_anim_08" android:duration="400" />
-    <item android:drawable="@drawable/lock_anim_10" android:duration="400" />
-    <item android:drawable="@drawable/lock_anim_12" android:duration="400" />
-    <item android:drawable="@drawable/lock_anim_14" android:duration="400" />
+    <item android:drawable="@drawable/lock_anim_0" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_1" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_2" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_3" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_4" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_5" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_6" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_7" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_8" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_9" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_10" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_11" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_12" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_13" android:duration="200" />
+    <item android:drawable="@drawable/lock_anim_14" android:duration="200" />
 </animation-list>
diff --git a/res/layout-land/choose_lock_pattern.xml b/res/layout-land/choose_lock_pattern.xml
index 9d623f6..9af76d1 100644
--- a/res/layout-land/choose_lock_pattern.xml
+++ b/res/layout-land/choose_lock_pattern.xml
@@ -18,28 +18,28 @@
         xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/topLayout"
     android:orientation="horizontal"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
     android:background="@color/black">
 
     <!-- left side: instructions and messages -->
     <LinearLayout
             android:orientation="vertical"
             android:layout_width="0dip"
-            android:layout_height="fill_parent"
+            android:layout_height="match_parent"
             android:layout_weight="1.0"
             >
 
         <!-- header message -->
         <TextView android:id="@+id/headerText"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center"
                   android:textSize="18sp"/>
 
         <!-- footer can show a message, or confirm / restart buttons -->
         <RelativeLayout
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="0dip"
                 android:layout_weight="1.0">
 
@@ -81,7 +81,7 @@
     <View
          android:background="@*android:drawable/code_lock_left"
          android:layout_width="2dip"
-         android:layout_height="fill_parent" />
+         android:layout_height="match_parent" />
     <!-- right side: lock pattern -->
     <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
          android:layout_width="wrap_content"
diff --git a/res/layout-land/choose_lock_pin.xml b/res/layout-land/choose_lock_pin.xml
new file mode 100644
index 0000000..cdc75d3
--- /dev/null
+++ b/res/layout-land/choose_lock_pin.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- TODO: think about moving to frameworks/base/res -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="horizontal"
+    android:background="@android:color/background_dark">
+
+    <LinearLayout android:id="@+id/topDisplayGroup"
+        android:layout_width="0dip"
+        android:layout_weight="1"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <!-- password entry -->
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_marginRight="6dip"
+            android:layout_marginLeft="6dip"
+            android:gravity="center_vertical"
+            android:background="@android:drawable/edit_text">
+
+            <!-- displays dots as user enters pin -->
+            <TextView android:id="@+id/pinDisplay"
+                android:layout_width="0dip"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:maxLines="1"
+                android:textAppearance="?android:attr/textAppearanceLargeInverse"
+                android:textStyle="bold"
+                android:inputType="textPassword"
+            />
+
+            <ImageButton android:id="@+id/backspace"
+                android:src="@android:drawable/ic_input_delete"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="-3dip"
+                android:layout_marginBottom="-3dip"
+            />
+        </LinearLayout>
+
+        <!-- header text ('Enter Pin') -->
+        <TextView android:id="@+id/headerText"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:lines="2"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+    </LinearLayout>
+
+    <include
+        android:id="@+id/keyPad"
+        layout="@layout/twelve_key_entry"
+        android:layout_width="0dip"
+        android:layout_weight="1"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/topDisplayGroup"
+        android:layout_marginTop="10dip"
+    />
+
+</LinearLayout>
diff --git a/res/layout-land/confirm_lock_pattern.xml b/res/layout-land/confirm_lock_pattern.xml
index 6decb14..2da2b9a 100644
--- a/res/layout-land/confirm_lock_pattern.xml
+++ b/res/layout-land/confirm_lock_pattern.xml
@@ -18,21 +18,21 @@
         xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/topLayout"
     android:orientation="horizontal"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
     android:background="@color/black">
 
     <!-- left side: instructions and messages -->
     <LinearLayout
             android:orientation="vertical"
             android:layout_width="0dip"
-            android:layout_height="fill_parent"
+            android:layout_height="match_parent"
             android:layout_weight="1.0"
             >
 
         <!-- header message -->
         <TextView android:id="@+id/headerText"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center"
                   android:textSize="18sp"/>
@@ -40,13 +40,13 @@
         <!-- fill space between header and button below -->
         <View
             android:layout_weight="1.0"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dip"
             />
 
         <!-- footer message -->
         <TextView android:id="@+id/footerText"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center"
                   android:textSize="14sp"/>
@@ -55,7 +55,7 @@
     <View
          android:background="@*android:drawable/code_lock_left"
          android:layout_width="2dip"
-         android:layout_height="fill_parent" />
+         android:layout_height="match_parent" />
     <!-- right side: lock pattern -->
     <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
          android:layout_width="wrap_content"
diff --git a/res/layout-land/confirm_lock_pin.xml b/res/layout-land/confirm_lock_pin.xml
new file mode 100644
index 0000000..beff4a1
--- /dev/null
+++ b/res/layout-land/confirm_lock_pin.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- TODO: think about moving to frameworks/base/res -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical"
+    android:background="@android:color/background_dark"
+    android:gravity="center_horizontal">
+
+    <LinearLayout android:id="@+id/topDisplayGroup"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <!-- header text ('Enter Pin') -->
+        <TextView android:id="@+id/headerText"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:lines="2"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+        <!-- password entry -->
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_marginRight="6dip"
+            android:layout_marginLeft="6dip"
+            android:gravity="center_vertical"
+            android:background="@android:drawable/edit_text">
+
+            <!-- displays dots as user enters pin -->
+            <TextView android:id="@+id/pinDisplay"
+                android:layout_width="0dip"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:maxLines="1"
+                android:textAppearance="?android:attr/textAppearanceLargeInverse"
+                android:textStyle="bold"
+                android:inputType="textPassword"
+            />
+
+            <ImageButton android:id="@+id/backspace"
+                android:src="@android:drawable/ic_input_delete"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="-3dip"
+                android:layout_marginBottom="-3dip"
+            />
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <include
+        android:id="@+id/keyPad"
+        layout="@layout/twelve_key_entry"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/topDisplayGroup"
+        android:layout_marginTop="10dip"
+    />
+
+</LinearLayout>
diff --git a/res/layout/apn_preference_layout.xml b/res/layout/apn_preference_layout.xml
index 2a7c2e9..1694a93 100644
--- a/res/layout/apn_preference_layout.xml
+++ b/res/layout/apn_preference_layout.xml
@@ -16,7 +16,7 @@
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:gravity="center_vertical">
diff --git a/res/layout/band_mode.xml b/res/layout/band_mode.xml
index e920af0..ddbc7ae 100644
--- a/res/layout/band_mode.xml
+++ b/res/layout/band_mode.xml
@@ -18,12 +18,12 @@
               android:orientation="vertical"
               android:padding="4dip"
               android:gravity="center_horizontal"
-              android:layout_width="fill_parent"
-              android:layout_height="fill_parent">
+              android:layout_width="match_parent"
+              android:layout_height="match_parent">
 
     <ListView android:id="@+id/band"
-              android:layout_width="fill_parent"
-              android:layout_height="fill_parent"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
               android:textSize="7sp">
     </ListView>
 
diff --git a/res/layout/battery_history.xml b/res/layout/battery_history.xml
index 5421c40..b46d97b 100644
--- a/res/layout/battery_history.xml
+++ b/res/layout/battery_history.xml
@@ -2,44 +2,44 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/topLayout"
     android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <TextView
         android:id="@+id/title"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content" />
 
     <LinearLayout
         android:id="@+id/graphLayout"
         android:orientation="vertical"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent" >
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
 
         <Spinner
             android:id="@+id/typeSpinner"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:entries="@array/battery_history_type_spinner" />
 
         <Spinner
             android:id="@+id/whichSpinner"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:entries="@array/battery_history_which_spinner" />
 
         <ScrollView
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content" >
 
         <LinearLayout
             android:orientation="vertical"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content" >
             
         <TextView
             android:id="@+id/messageText"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:gravity="center_horizontal"
             android:textSize="17dp"
@@ -47,7 +47,7 @@
 
         <com.android.settings.battery_history.GraphableButton
             android:id="@+id/button0"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_marginLeft="4dp"
             android:layout_marginRight="4dp"
@@ -56,7 +56,7 @@
     
         <com.android.settings.battery_history.GraphableButton
             android:id="@+id/button1"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_marginLeft="4dp"
             android:layout_marginRight="4dp"
@@ -65,7 +65,7 @@
     
         <com.android.settings.battery_history.GraphableButton
             android:id="@+id/button2"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_marginLeft="4dp"
             android:layout_marginRight="4dp"
@@ -74,7 +74,7 @@
     
         <com.android.settings.battery_history.GraphableButton
             android:id="@+id/button3"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_marginLeft="4dp"
             android:layout_marginRight="4dp"
@@ -83,7 +83,7 @@
     
         <com.android.settings.battery_history.GraphableButton
             android:id="@+id/button4"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_marginLeft="4dp"
             android:layout_marginRight="4dp"
@@ -92,7 +92,7 @@
     
         <com.android.settings.battery_history.GraphableButton
             android:id="@+id/button5"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_marginLeft="4dp"
             android:layout_marginRight="4dp"
@@ -101,7 +101,7 @@
     
         <com.android.settings.battery_history.GraphableButton
             android:id="@+id/button6"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_marginLeft="4dp"
             android:layout_marginRight="4dp"
@@ -110,7 +110,7 @@
     
         <com.android.settings.battery_history.GraphableButton
             android:id="@+id/button7"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_marginLeft="4dp"
             android:layout_marginRight="4dp"
@@ -126,15 +126,15 @@
         android:id="@+id/textLayout"
         android:visibility="gone"
         android:orientation="vertical"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent" >
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
 
         <ScrollView
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent" >
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" >
             <TextView
                 android:id="@+id/detailsText"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:textSize="17dp"
                 android:layout_height="1000dp"/>
         </ScrollView>
diff --git a/res/layout/bluetooth.xml b/res/layout/bluetooth.xml
index 530cbbe..a4ac1ca 100644
--- a/res/layout/bluetooth.xml
+++ b/res/layout/bluetooth.xml
@@ -19,32 +19,32 @@
 -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
     android:paddingLeft="2dip"
     android:paddingRight="2dip">
 
     <Button android:id="@+id/enable"
         android:textStyle="bold"
         android:text="@string/bluetooth_enable_text"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"/>
 
     <Button android:id="@+id/scan"
         android:textStyle="bold"
         android:text="@string/bluetooth_scan_text"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"/>
 
     <Button android:id="@+id/settings"
         android:textStyle="bold"
         android:text="@string/bluetooth_settings_text"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"/>
 
     <ListView android:id="@android:id/list"
-    	android:layout_width="fill_parent"
-    	android:layout_height="fill_parent"
+    	android:layout_width="match_parent"
+    	android:layout_height="match_parent"
     	android:drawSelectorOnTop="false">
     </ListView>
     
diff --git a/res/layout/bluetooth_device_info.xml b/res/layout/bluetooth_device_info.xml
index e589103..4178734 100644
--- a/res/layout/bluetooth_device_info.xml
+++ b/res/layout/bluetooth_device_info.xml
@@ -16,20 +16,20 @@
 
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/scroll_content" 
-	android:layout_width="fill_parent" 
-	android:layout_height="fill_parent">
+	android:layout_width="match_parent" 
+	android:layout_height="match_parent">
     <LinearLayout
         android:orientation="vertical"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent">
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
 
         <TextView
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/bluetooth_device_info_alias" />
 
         <TextView android:id="@+id/deviceAlias"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/bluetooth_device_info_no_alias" />
 
@@ -49,12 +49,12 @@
             android:text="@string/bluetooth_device_info_sdp" />
 
         <TextView
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/bluetooth_device_info" />
 
         <TextView android:id="@+id/deviceInfo"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/bluetooth_device_info_deviceInfo_text" />
      </LinearLayout>        
diff --git a/res/layout/bluetooth_discoverable.xml b/res/layout/bluetooth_discoverable.xml
index 3673774..fb65453 100644
--- a/res/layout/bluetooth_discoverable.xml
+++ b/res/layout/bluetooth_discoverable.xml
@@ -19,12 +19,12 @@
 
 <ScrollView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_height="fill_parent"
-    android:layout_width="fill_parent">
+    android:layout_height="match_parent"
+    android:layout_width="match_parent">
 
     <TextView
         android:id="@+id/message"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:paddingLeft="20dip"
         android:paddingRight="20dip"
diff --git a/res/layout/bluetooth_pin_entry.xml b/res/layout/bluetooth_pin_entry.xml
index bcb6f16..16b75fc 100644
--- a/res/layout/bluetooth_pin_entry.xml
+++ b/res/layout/bluetooth_pin_entry.xml
@@ -19,18 +19,18 @@
 
 <ScrollView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_height="fill_parent"
-    android:layout_width="fill_parent">
+    android:layout_height="match_parent"
+    android:layout_width="match_parent">
 
     <LinearLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_height="fill_parent"
-        android:layout_width="fill_parent"
+        android:layout_height="match_parent"
+        android:layout_width="match_parent"
         android:orientation="vertical">
 
         <TextView
             android:id="@+id/message"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginLeft="20dip"
             android:layout_marginRight="20dip"
@@ -40,7 +40,7 @@
         <EditText
             android:id="@+id/text"
             android:layout_height="wrap_content"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_marginTop="20dip"
             android:layout_marginLeft="20dip"
             android:layout_marginRight="20dip"
diff --git a/res/layout/bookmark_picker_item.xml b/res/layout/bookmark_picker_item.xml
index fd764ea..a0d71c6 100644
--- a/res/layout/bookmark_picker_item.xml
+++ b/res/layout/bookmark_picker_item.xml
@@ -17,7 +17,7 @@
 */
 -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:paddingLeft="2dip"
@@ -29,7 +29,7 @@
         android:scaleType="fitCenter" />
 
     <TextView android:id="@+id/title"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:textAppearance="?android:attr/textAppearanceLarge"
         android:paddingLeft="6dip" />
diff --git a/res/layout/choose_lock_password.xml b/res/layout/choose_lock_password.xml
new file mode 100644
index 0000000..213f9a4
--- /dev/null
+++ b/res/layout/choose_lock_password.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- TODO: think about moving to frameworks/base/res -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical"
+    android:background="@android:color/background_dark"
+    android:gravity="center_horizontal">
+
+    <LinearLayout android:id="@+id/topDisplayGroup"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <!-- header text ('Enter Pin') -->
+        <TextView android:id="@+id/headerText"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:lines="2"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+        <!-- password entry -->
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_marginRight="6dip"
+            android:layout_marginLeft="6dip"
+            android:gravity="center_vertical"
+            android:background="@android:drawable/edit_text">
+
+            <!-- displays dots as user enters pin -->
+            <TextView android:id="@+id/pinDisplay"
+                android:layout_width="0dip"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:maxLines="1"
+                android:textAppearance="?android:attr/textAppearanceLargeInverse"
+                android:textStyle="bold"
+                android:inputType="textPassword"
+            />
+
+            <ImageButton android:id="@+id/backspace"
+                android:src="@android:drawable/ic_input_delete"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="-3dip"
+                android:layout_marginBottom="-3dip"
+            />
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <View
+        android:layout_width="fill_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+    />
+
+</LinearLayout>
diff --git a/res/layout/choose_lock_pattern.xml b/res/layout/choose_lock_pattern.xml
index 78ab8b4..97c647f 100644
--- a/res/layout/choose_lock_pattern.xml
+++ b/res/layout/choose_lock_pattern.xml
@@ -18,18 +18,18 @@
     android:id="@+id/topLayout"
     android:orientation="vertical"
     android:layout_width="wrap_content"
-    android:layout_height="fill_parent"
+    android:layout_height="match_parent"
     android:background="@color/black">
 
     <!-- takes up all space above button bar at bottom -->
     <LinearLayout
         android:orientation="vertical"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="0dip"
         android:layout_weight="1">
 
         <TextView android:id="@+id/headerText"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dip"
             android:layout_weight="1"
             android:gravity="center"
@@ -37,7 +37,7 @@
 
         <View
              android:background="@*android:drawable/code_lock_top"
-             android:layout_width="fill_parent"
+             android:layout_width="match_parent"
              android:layout_height="2dip" />
         <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
              android:layout_width="wrap_content"
@@ -46,11 +46,11 @@
         <!-- bottom line looks bad when button bar is their too, omit in this case -->
         <!--View
              android:background="@*android:drawable/code_lock_bottom"
-             android:layout_width="fill_parent"
+             android:layout_width="match_parent"
              android:layout_height="8dip" /-->
 
         <TextView android:id="@+id/footerText"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dip"
             android:layout_weight="1"
             android:gravity="center"
@@ -61,7 +61,7 @@
 
     <LinearLayout style="@android:style/ButtonBar"
         android:orientation="horizontal"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
         <Button android:id="@+id/footerLeftButton"
diff --git a/res/layout/choose_lock_pattern_example.xml b/res/layout/choose_lock_pattern_example.xml
index d1e816c..62a5364 100644
--- a/res/layout/choose_lock_pattern_example.xml
+++ b/res/layout/choose_lock_pattern_example.xml
@@ -16,22 +16,22 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
-    android:layout_height="fill_parent"
-    android:layout_width="fill_parent">
+    android:layout_height="match_parent"
+    android:layout_width="match_parent">
     
     <ScrollView 
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
         android:layout_weight="1">
         
         <LinearLayout
             android:orientation="vertical"
-            android:layout_height="fill_parent"
-            android:layout_width="fill_parent"
+            android:layout_height="match_parent"
+            android:layout_width="match_parent"
             android:padding="5dip">
             
             <TextView
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/lock_example_title"
                 android:gravity="center_horizontal"
@@ -48,7 +48,7 @@
             />
             
             <TextView
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="5dip"
                 android:text="@string/lock_example_message"
@@ -62,7 +62,7 @@
     
     <LinearLayout style="@android:style/ButtonBar"
         android:orientation="horizontal"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content">
         
         <Button android:id="@+id/skip_button"
diff --git a/res/layout/choose_lock_pattern_tutorial.xml b/res/layout/choose_lock_pattern_tutorial.xml
index 8eadc01..3032c05 100644
--- a/res/layout/choose_lock_pattern_tutorial.xml
+++ b/res/layout/choose_lock_pattern_tutorial.xml
@@ -16,22 +16,22 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
-    android:layout_height="fill_parent"
-    android:layout_width="fill_parent">
+    android:layout_height="match_parent"
+    android:layout_width="match_parent">
     
     <ScrollView 
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="0dip"
         android:layout_weight="1">
         
         <LinearLayout
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="vertical"
             android:padding="5dip">
             
             <TextView
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:gravity="center_horizontal"
                 android:text="@string/lock_title"
@@ -41,7 +41,7 @@
             />
         
             <TextView 
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:textAppearance="?android:attr/textAppearanceMedium"
                 android:layout_marginTop="10dip"
@@ -54,7 +54,7 @@
     
     <LinearLayout style="@android:style/ButtonBar"
         android:orientation="horizontal"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
         <Button android:id="@+id/skip_button"
diff --git a/res/layout/choose_lock_pin.xml b/res/layout/choose_lock_pin.xml
new file mode 100644
index 0000000..beff4a1
--- /dev/null
+++ b/res/layout/choose_lock_pin.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- TODO: think about moving to frameworks/base/res -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical"
+    android:background="@android:color/background_dark"
+    android:gravity="center_horizontal">
+
+    <LinearLayout android:id="@+id/topDisplayGroup"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <!-- header text ('Enter Pin') -->
+        <TextView android:id="@+id/headerText"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:lines="2"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+        <!-- password entry -->
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_marginRight="6dip"
+            android:layout_marginLeft="6dip"
+            android:gravity="center_vertical"
+            android:background="@android:drawable/edit_text">
+
+            <!-- displays dots as user enters pin -->
+            <TextView android:id="@+id/pinDisplay"
+                android:layout_width="0dip"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:maxLines="1"
+                android:textAppearance="?android:attr/textAppearanceLargeInverse"
+                android:textStyle="bold"
+                android:inputType="textPassword"
+            />
+
+            <ImageButton android:id="@+id/backspace"
+                android:src="@android:drawable/ic_input_delete"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="-3dip"
+                android:layout_marginBottom="-3dip"
+            />
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <include
+        android:id="@+id/keyPad"
+        layout="@layout/twelve_key_entry"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/topDisplayGroup"
+        android:layout_marginTop="10dip"
+    />
+
+</LinearLayout>
diff --git a/res/layout/compute_sizes.xml b/res/layout/compute_sizes.xml
index b32ba58..88dbfd1 100755
--- a/res/layout/compute_sizes.xml
+++ b/res/layout/compute_sizes.xml
@@ -16,15 +16,15 @@
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
     <ListView 
         android:id="@android:id/list"
         android:drawSelectorOnTop="false"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content" />
     <TextView android:id="@android:id/empty"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:paddingLeft="20dip"
         android:paddingTop="5dip"
diff --git a/res/layout/confirm_lock_pattern.xml b/res/layout/confirm_lock_pattern.xml
index 52cf24a..01ef5b1 100644
--- a/res/layout/confirm_lock_pattern.xml
+++ b/res/layout/confirm_lock_pattern.xml
@@ -18,11 +18,11 @@
     android:id="@+id/topLayout"
     android:orientation="vertical"
     android:layout_width="wrap_content"
-    android:layout_height="fill_parent"
+    android:layout_height="match_parent"
     android:background="@color/black">
 
     <TextView android:id="@+id/headerText"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="0dip"
         android:layout_weight="1.0"
         android:gravity="center"
@@ -30,18 +30,18 @@
 
     <View
          android:background="@*android:drawable/code_lock_top"
-         android:layout_width="fill_parent"
+         android:layout_width="match_parent"
          android:layout_height="2dip" />
     <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content" />
     <View
          android:background="@*android:drawable/code_lock_bottom"
-         android:layout_width="fill_parent"
+         android:layout_width="match_parent"
          android:layout_height="8dip" />
 
     <TextView android:id="@+id/footerText"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="0dip"
         android:layout_weight="1.0"
         android:gravity="center"
diff --git a/res/layout/confirm_lock_pin.xml b/res/layout/confirm_lock_pin.xml
new file mode 100644
index 0000000..beff4a1
--- /dev/null
+++ b/res/layout/confirm_lock_pin.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- TODO: think about moving to frameworks/base/res -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical"
+    android:background="@android:color/background_dark"
+    android:gravity="center_horizontal">
+
+    <LinearLayout android:id="@+id/topDisplayGroup"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <!-- header text ('Enter Pin') -->
+        <TextView android:id="@+id/headerText"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:lines="2"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+        <!-- password entry -->
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_marginRight="6dip"
+            android:layout_marginLeft="6dip"
+            android:gravity="center_vertical"
+            android:background="@android:drawable/edit_text">
+
+            <!-- displays dots as user enters pin -->
+            <TextView android:id="@+id/pinDisplay"
+                android:layout_width="0dip"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:maxLines="1"
+                android:textAppearance="?android:attr/textAppearanceLargeInverse"
+                android:textStyle="bold"
+                android:inputType="textPassword"
+            />
+
+            <ImageButton android:id="@+id/backspace"
+                android:src="@android:drawable/ic_input_delete"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="-3dip"
+                android:layout_marginBottom="-3dip"
+            />
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <include
+        android:id="@+id/keyPad"
+        layout="@layout/twelve_key_entry"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/topDisplayGroup"
+        android:layout_marginTop="10dip"
+    />
+
+</LinearLayout>
diff --git a/res/layout/credentials_password_dialog.xml b/res/layout/credentials_password_dialog.xml
index c23cc68..440a107 100644
--- a/res/layout/credentials_password_dialog.xml
+++ b/res/layout/credentials_password_dialog.xml
@@ -15,17 +15,17 @@
 -->
 
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:orientation="vertical"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
             android:padding="15dip">
 
         <TextView android:id="@+id/hint"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:textSize="@dimen/vpn_connect_normal_text_size"
                 android:text="@string/credentials_first_time_hint"
@@ -33,38 +33,38 @@
                 android:visibility="gone"/>
 
         <TextView android:id="@+id/error"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:textColor="@color/red"
                 android:textStyle="bold"
                 android:visibility="gone"/>
 
         <TextView android:id="@+id/old_password_prompt"
-        	android:layout_width="fill_parent"
+        	android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/credentials_old_password"
                 android:visibility="gone"/>
         <EditText android:id="@+id/old_password"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:password="True"
                 android:singleLine="True"
                 android:visibility="gone"/>
 
-        <TextView android:layout_width="fill_parent"
+        <TextView android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/credentials_new_password" />
         <EditText android:id="@+id/new_password"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:password="True"
                 android:singleLine="True"/>
 
-        <TextView android:layout_width="fill_parent"
+        <TextView android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/credentials_confirm_password" />
         <EditText android:id="@+id/confirm_password"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:password="True"
                 android:singleLine="True"/>
diff --git a/res/layout/credentials_unlock_dialog.xml b/res/layout/credentials_unlock_dialog.xml
index 2ba2ace..a538807 100644
--- a/res/layout/credentials_unlock_dialog.xml
+++ b/res/layout/credentials_unlock_dialog.xml
@@ -15,17 +15,17 @@
 -->
 
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:orientation="vertical"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
             android:padding="15dip">
 
         <TextView android:id="@+id/hint"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:textSize="@dimen/vpn_connect_normal_text_size"
                 android:text="@string/credentials_unlock_hint"
@@ -33,14 +33,14 @@
                 android:visibility="gone"/>
 
         <TextView android:id="@+id/error"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:textColor="@color/red"
                 android:textStyle="bold"
                 android:visibility="gone"/>
 
         <EditText android:id="@+id/old_password"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:password="True"
                 android:singleLine="True"/>
diff --git a/res/layout/date_time_settings_setupwizard.xml b/res/layout/date_time_settings_setupwizard.xml
index fc6f5e2..930e199 100644
--- a/res/layout/date_time_settings_setupwizard.xml
+++ b/res/layout/date_time_settings_setupwizard.xml
@@ -15,20 +15,20 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_height="fill_parent"
-        android:layout_width="fill_parent"
+        android:layout_height="match_parent"
+        android:layout_width="match_parent"
         android:orientation="vertical">
      
     <LinearLayout
         android:orientation="vertical"
         android:layout_height="0dip"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_weight="1"
         android:gravity="left">
         
         <ListView android:id="@android:id/list"
-            android:layout_width="fill_parent" 
-            android:layout_height="fill_parent"
+            android:layout_width="match_parent" 
+            android:layout_height="match_parent"
             android:drawSelectorOnTop="false"
             android:paddingTop="2dip"
         />
@@ -37,7 +37,7 @@
     
     <RelativeLayout
         android:layout_height="wrap_content"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:background="@android:drawable/bottom_bar">
         
         <Button android:id="@+id/next_button"
diff --git a/res/layout/device_admin_add.xml b/res/layout/device_admin_add.xml
new file mode 100644
index 0000000..4845fca
--- /dev/null
+++ b/res/layout/device_admin_add.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/active_layout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_weight="1"
+        android:orientation="vertical">
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            android:orientation="vertical">
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:background="@*android:drawable/title_bar_medium">
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:text="@string/add_device_admin_msg"
+                    android:gravity="center"
+                    android:textAppearance="?android:attr/textAppearanceLarge"
+                    android:textColor="?android:attr/textColorPrimary"
+                    android:shadowColor="?android:attr/colorBackground"
+                    android:shadowRadius="2" />
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+                <ImageView android:id="@+id/active_icon"
+                    android:layout_width="@android:dimen/app_icon_size"
+                    android:layout_height="@android:dimen/app_icon_size"
+                    android:layout_marginLeft="5dip"
+                    android:layout_marginRight="11dip"
+                    android:layout_gravity="center_vertical"
+                    android:scaleType="fitCenter"/>
+                <TextView android:id="@+id/active_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:layout_marginBottom="2dip"
+                    android:layout_gravity="center_vertical"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textStyle="bold"
+                    android:singleLine="true"
+                    android:ellipsize="marquee" />
+            </LinearLayout>
+            <TextView android:id="@+id/active_warning"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:padding="10dip" />
+            <LinearLayout android:id="@+id/admin_policies"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                android:paddingLeft="16dip"
+                android:paddingRight="12dip" />
+            <TextView android:id="@+id/active_description"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:padding="10dip" />
+            <TextView android:id="@+id/add_msg"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:padding="10dip" />
+        </LinearLayout>
+    </ScrollView>
+    <LinearLayout style="@android:style/ButtonBar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+        <View
+           android:layout_width="0dip"
+           android:layout_height="0dip"
+           android:layout_weight="1" />
+        <Button android:id="@+id/add_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="@string/add_device_admin" />
+        <View
+           android:layout_width="0dip"
+           android:layout_height="0dip"
+           android:layout_weight="1" />
+    </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/device_admin_item.xml b/res/layout/device_admin_item.xml
new file mode 100644
index 0000000..d17ff24
--- /dev/null
+++ b/res/layout/device_admin_item.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:orientation="horizontal"
+    android:paddingRight="6dip"
+    android:paddingLeft="6dip"
+    android:gravity="fill" >
+
+    <ImageView android:id="@+id/icon"
+        android:layout_width="@android:dimen/app_icon_size"
+        android:layout_height="@android:dimen/app_icon_size"
+        android:layout_marginLeft="5dip"
+        android:layout_marginRight="11dip"
+        android:layout_gravity="center_vertical"
+        android:scaleType="fitCenter"/>
+
+    <TextView android:id="@+id/name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:layout_gravity="center_vertical"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textStyle="bold"
+        android:singleLine="true"
+        android:ellipsize="marquee"
+        android:layout_marginBottom="2dip" />
+</LinearLayout>
diff --git a/res/layout/device_admin_settings.xml b/res/layout/device_admin_settings.xml
new file mode 100644
index 0000000..40b20e6
--- /dev/null
+++ b/res/layout/device_admin_settings.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <LinearLayout
+        android:id="@+id/active_layout"
+	    android:layout_width="match_parent"
+	    android:layout_height="match_parent"
+	    android:orientation="vertical"
+	    android:visibility="gone">
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+		    android:background="@*android:drawable/title_bar_medium">
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+	            android:text="@string/active_device_admin_msg"
+                android:gravity="center"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textColor="?android:attr/textColorPrimary"
+                android:shadowColor="?android:attr/colorBackground"
+                android:shadowRadius="2" />
+        </LinearLayout>
+        <LinearLayout
+	        android:layout_width="match_parent"
+	        android:layout_height="wrap_content"
+	        android:orientation="horizontal">
+	        <ImageView android:id="@+id/active_icon"
+	            android:layout_width="@android:dimen/app_icon_size"
+	            android:layout_height="@android:dimen/app_icon_size"
+	            android:layout_marginLeft="5dip"
+	            android:layout_marginRight="11dip"
+	            android:layout_gravity="center_vertical"
+	            android:scaleType="fitCenter"/>
+            <TextView android:id="@+id/active_name"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:layout_marginBottom="2dip"
+                android:layout_gravity="center_vertical"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:textStyle="bold"
+                android:singleLine="true"
+                android:ellipsize="marquee" />
+        </LinearLayout>
+        <TextView android:id="@+id/active_description"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:padding="10dip" />
+	    <LinearLayout style="@android:style/ButtonBar"
+	        android:layout_width="match_parent"
+	        android:layout_height="wrap_content"
+	        android:orientation="horizontal">
+            <View
+               android:layout_width="0dip"
+               android:layout_height="0dip"
+               android:layout_weight="1" />
+            <Button android:id="@+id/remove_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+               android:text="@string/remove_device_admin" />
+            <View
+               android:layout_width="0dip"
+               android:layout_height="0dip"
+               android:layout_weight="1" />
+	    </LinearLayout>
+    </LinearLayout>
+    
+    <LinearLayout
+        android:id="@+id/select_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:visibility="gone">
+        <LinearLayout
+	        android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+	        android:orientation="horizontal"
+            android:background="@*android:drawable/title_bar_medium">
+	        <TextView
+	            android:layout_width="match_parent"
+			    android:layout_height="match_parent"
+	            android:text="@string/select_device_admin_msg"
+	            android:gravity="center"
+	            android:textAppearance="?android:attr/textAppearanceLarge"
+		        android:textColor="?android:attr/textColorPrimary"
+		        android:shadowColor="?android:attr/colorBackground"
+		        android:shadowRadius="2" />
+        </LinearLayout>
+        <ListView android:id="@android:id/list"
+                android:layout_width="match_parent" 
+                android:layout_height="match_parent"
+                android:paddingTop="10dip"
+                android:paddingBottom="10dip"
+                android:drawSelectorOnTop="false"
+                android:fastScrollEnabled="true" />
+    </LinearLayout>
+</FrameLayout>
diff --git a/res/layout/dialog_edittext.xml b/res/layout/dialog_edittext.xml
index 0dcf673..6b849ac 100644
--- a/res/layout/dialog_edittext.xml
+++ b/res/layout/dialog_edittext.xml
@@ -22,7 +22,7 @@
     
     <EditText 
         android:id="@+id/edittext"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:maxLength="50"
     />
diff --git a/res/layout/display.xml b/res/layout/display.xml
index 0049025..f35730b 100644
--- a/res/layout/display.xml
+++ b/res/layout/display.xml
@@ -23,22 +23,22 @@
         android:orientation="vertical">
 
         <TextView
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/display_font_size_label" />
 
         <Spinner android:id="@+id/fontSize"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content">
         </Spinner>
 
         <TextView
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/display_preview_label" />
 
         <TextView android:id="@+id/preview"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content" />
 
         <Button android:id="@+id/save"
diff --git a/res/layout/installed_app_details.xml b/res/layout/installed_app_details.xml
index 2810604..8da1d76 100644
--- a/res/layout/installed_app_details.xml
+++ b/res/layout/installed_app_details.xml
@@ -18,12 +18,12 @@
 -->
 <ScrollView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
     <LinearLayout
         android:id="@+id/all_details"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
         android:paddingRight="6dip"
         android:paddingTop="5dip"
         android:paddingBottom="5dip"
@@ -31,14 +31,14 @@
 
         <!-- App snippet -->
         <RelativeLayout
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical">
 
             <LinearLayout
                 android:orientation="vertical"
                 android:layout_alignParentLeft="true"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:paddingTop="6dip"
                 android:paddingBottom="6dip"
@@ -79,12 +79,12 @@
             android:text="@string/storage_label" />
 
         <LinearLayout
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:paddingLeft="6dip"
             android:orientation="vertical">
             <LinearLayout
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal"
                 android:baselineAligned="true"
@@ -121,7 +121,7 @@
 
             </LinearLayout>
             <LinearLayout
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal"
                 android:baselineAligned="true"
@@ -158,7 +158,7 @@
             </LinearLayout>
             <LinearLayout
                 android:id="@+id/info_size"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal"
                 android:baselineAligned="true"
@@ -195,7 +195,7 @@
             </LinearLayout>
             <!-- Manage space, Clear data/Uninstall buttons  -->
             <LinearLayout
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:gravity="bottom"
                 android:orientation="horizontal">
@@ -229,7 +229,7 @@
         <!-- Clear cache section -->
         <RelativeLayout
             android:id="@+id/cache_panel"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content" >
             <TextView
                 android:id="@+id/cache_header"
@@ -237,7 +237,7 @@
                 android:text="@string/cache_header_label" />
             <LinearLayout
                 android:id="@+id/cache_size"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal"
                 android:baselineAligned="true"
@@ -287,13 +287,13 @@
             android:text="@string/auto_launch_label" />
 
         <RelativeLayout 
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical">
             <TextView android:id="@+id/auto_launch"
                 android:textAppearance="?android:attr/textAppearanceSmall"
                 android:layout_alignParentLeft="true"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:paddingTop="6dip"
                 android:paddingRight="6dip"
@@ -313,7 +313,7 @@
             android:text="@string/controls_label" />
 
         <RelativeLayout
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical">
             <Button android:id="@+id/force_stop_button"
@@ -329,8 +329,8 @@
         <!-- Permissions section -->
         <LinearLayout
             android:id="@+id/permissions_section"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
             android:orientation="vertical">
             <TextView
                 style="?android:attr/listSeparatorTextViewStyle"
@@ -341,12 +341,12 @@
                 android:paddingTop="6dip"
                 android:paddingLeft="6dip"
                 android:paddingBottom="6dip"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content" />
             <LinearLayout
                 android:id="@+id/security_settings_list"
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
                 android:orientation="vertical"/>
         </LinearLayout>
     </LinearLayout>
diff --git a/res/layout/intent_sender.xml b/res/layout/intent_sender.xml
index 07fe67d..8a85bf8 100644
--- a/res/layout/intent_sender.xml
+++ b/res/layout/intent_sender.xml
@@ -21,13 +21,13 @@
     android:paddingLeft="6dip"
     android:paddingRight="6dip"
     android:paddingBottom="3dip"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <LinearLayout
         android:orientation="vertical"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent">
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
 
         <TextView
                 android:textStyle="bold"
diff --git a/res/layout/list_content_with_empty_view.xml b/res/layout/list_content_with_empty_view.xml
index 324d23f..1d4dcdc 100644
--- a/res/layout/list_content_with_empty_view.xml
+++ b/res/layout/list_content_with_empty_view.xml
@@ -16,18 +16,18 @@
 
  
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent" >
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" >
 
     <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list"
-        android:layout_width="fill_parent" 
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent" 
+        android:layout_height="match_parent"
         android:drawSelectorOnTop="false"
         />
 
     <TextView android:id="@+id/empty"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
         android:padding="5dip"
         android:gravity="center"
         android:visibility="gone" />
diff --git a/res/layout/locale_picker.xml b/res/layout/locale_picker.xml
index 476293f..cc38278 100644
--- a/res/layout/locale_picker.xml
+++ b/res/layout/locale_picker.xml
@@ -16,12 +16,12 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <ListView android:id="@android:id/list"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
         android:drawSelectorOnTop="false"
     />
 
diff --git a/res/layout/locale_picker_in_setupwizard.xml b/res/layout/locale_picker_in_setupwizard.xml
index 184250d..d816f47 100644
--- a/res/layout/locale_picker_in_setupwizard.xml
+++ b/res/layout/locale_picker_in_setupwizard.xml
@@ -16,8 +16,8 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
     
     <TextView
         android:layout_width="wrap_content"
@@ -29,15 +29,15 @@
     />
     
     <View
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="1dip"
         android:layout_marginTop="8dip"
         android:background="@android:drawable/divider_horizontal_dark"
     />
 
     <ListView android:id="@android:id/list"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
         android:drawSelectorOnTop="false"
     />
 
diff --git a/res/layout/locale_picker_item.xml b/res/layout/locale_picker_item.xml
index caa6fb5..091419f 100644
--- a/res/layout/locale_picker_item.xml
+++ b/res/layout/locale_picker_item.xml
@@ -17,7 +17,7 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="horizontal"
     android:layout_height="wrap_content"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:gravity="center_vertical"
     android:minHeight="?android:attr/listPreferredItemHeight"    
     android:padding="5dip">
diff --git a/res/layout/manage_applications_item.xml b/res/layout/manage_applications_item.xml
index ecefcf5..cdf4c9d 100755
--- a/res/layout/manage_applications_item.xml
+++ b/res/layout/manage_applications_item.xml
@@ -18,7 +18,7 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:orientation="horizontal"
@@ -38,7 +38,7 @@
 
     <LinearLayout
         android:orientation="vertical"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content" >
         <TextView android:id="@+id/app_name"
             android:layout_width="wrap_content"
diff --git a/res/layout/pick_item.xml b/res/layout/pick_item.xml
index f276511..62fc4f4 100755
--- a/res/layout/pick_item.xml
+++ b/res/layout/pick_item.xml
@@ -15,7 +15,7 @@
 -->
 
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:textAppearance="?android:attr/textAppearanceLargeInverse"
diff --git a/res/layout/power_usage_action_item.xml b/res/layout/power_usage_action_item.xml
index 7b81ec1..a53c551 100644
--- a/res/layout/power_usage_action_item.xml
+++ b/res/layout/power_usage_action_item.xml
@@ -15,7 +15,7 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:gravity="center_vertical"
@@ -25,14 +25,14 @@
     android:paddingRight="?android:attr/scrollbarSize">
 
     <TextView android:id="@+id/summary"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginTop="2dip"
             android:ellipsize="marquee"
             android:textAppearance="?android:attr/textAppearanceMedium"/>
 
     <LinearLayout
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="horizontal">
         <!-- Spacer -->
diff --git a/res/layout/power_usage_detail_item_text.xml b/res/layout/power_usage_detail_item_text.xml
index 7ea2432..6c21274 100644
--- a/res/layout/power_usage_detail_item_text.xml
+++ b/res/layout/power_usage_detail_item_text.xml
@@ -16,7 +16,7 @@
 
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content">
     <!--Label for the item-->
     <TextView
diff --git a/res/layout/power_usage_details.xml b/res/layout/power_usage_details.xml
index f7485ee..18781a9 100644
--- a/res/layout/power_usage_details.xml
+++ b/res/layout/power_usage_details.xml
@@ -16,18 +16,18 @@
 
 <ScrollView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
     <LinearLayout
         android:id="@+id/all_details"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
         android:paddingTop="5dip"
         android:paddingBottom="5dip"
         android:orientation="vertical">
 
         <LinearLayout
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:minHeight="?android:attr/listPreferredItemHeight"
             android:orientation="horizontal"
@@ -73,7 +73,7 @@
                     android:id="@+id/gauge"
                     android:background="#80404040"
                     android:layout_height="wrap_content"
-                    android:layout_width="fill_parent"
+                    android:layout_width="match_parent"
                     android:layout_marginTop="5dip"
                     android:layout_below="@id/battery_percentage"
                     android:layout_gravity="center_vertical" />
@@ -93,7 +93,7 @@
 
         <LinearLayout
             android:id="@+id/details"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:paddingLeft="6dip"
             android:orientation="vertical">
@@ -104,7 +104,7 @@
 
         <LinearLayout
             android:id="@+id/controls"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="vertical">
 
@@ -126,7 +126,7 @@
 
         <LinearLayout
             android:id="@+id/packages_section"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:paddingLeft="6dip"
             android:orientation="vertical">
diff --git a/res/layout/power_usage_package_item.xml b/res/layout/power_usage_package_item.xml
index dcd5aad..750e062 100644
--- a/res/layout/power_usage_package_item.xml
+++ b/res/layout/power_usage_package_item.xml
@@ -16,7 +16,7 @@
 
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content">
     <!--Label for the item-->
     <TextView
diff --git a/res/layout/preference_bluetooth.xml b/res/layout/preference_bluetooth.xml
index e832f20..501c827 100644
--- a/res/layout/preference_bluetooth.xml
+++ b/res/layout/preference_bluetooth.xml
@@ -15,7 +15,7 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:gravity="center_vertical"
diff --git a/res/layout/preference_dialog_brightness.xml b/res/layout/preference_dialog_brightness.xml
index 071beed..0fa01e4 100644
--- a/res/layout/preference_dialog_brightness.xml
+++ b/res/layout/preference_dialog_brightness.xml
@@ -18,11 +18,11 @@
 -->
 
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent">
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
             android:orientation="vertical"
             android:gravity="center_horizontal"
             android:paddingBottom="20dip">
@@ -33,7 +33,7 @@
                 android:paddingTop="20dip" />
 
         <CheckBox android:id="@+id/automatic_mode"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/automatic_brightness"
                 android:textAppearance="?android:attr/textAppearanceSmall"
@@ -42,7 +42,7 @@
                 android:layout_marginRight="20dip" />
 
         <SeekBar android:id="@*android:id/seekbar"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:padding="20dip" />
 
diff --git a/res/layout/preference_dialog_ringervolume.xml b/res/layout/preference_dialog_ringervolume.xml
index 5905f45..e8dc704 100644
--- a/res/layout/preference_dialog_ringervolume.xml
+++ b/res/layout/preference_dialog_ringervolume.xml
@@ -15,12 +15,12 @@
 -->
 
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent">
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
         
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
             android:orientation="vertical"
             android:gravity="center_horizontal"
             android:paddingBottom="20dip">
@@ -31,23 +31,53 @@
                 android:paddingTop="20dip" />
                 
         <TextView
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/incoming_call_volume_title"
-                android:paddingTop="20dip"
+                android:paddingTop="10dip"
                 android:paddingLeft="20dip" 
                 android:paddingRight="20dip" />
         
         <!-- Used for the ring volume.  This is what the superclass VolumePreference uses. -->
         <SeekBar android:id="@*android:id/seekbar"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:paddingTop="6dip" 
                 android:paddingLeft="20dip" 
                 android:paddingRight="20dip" />
             
+        <!-- Used for the media volume -->
+        <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/media_volume_title"
+                android:paddingTop="10dip"
+                android:paddingLeft="20dip" 
+                android:paddingRight="20dip" />
+        <SeekBar android:id="@+id/media_volume_seekbar"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingTop="6dip" 
+                android:paddingLeft="20dip" 
+                android:paddingRight="20dip" />
+
+        <!-- Used for the alarm volume -->
+        <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/alarm_volume_title"
+                android:paddingTop="10dip"
+                android:paddingLeft="20dip" 
+                android:paddingRight="20dip" />
+        <SeekBar android:id="@+id/alarm_volume_seekbar"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingTop="6dip" 
+                android:paddingLeft="20dip" 
+                android:paddingRight="20dip" />
+
         <CheckBox android:id="@+id/same_notification_volume"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/checkbox_notification_same_as_incoming_call"
                 android:textAppearance="?android:attr/textAppearanceSmall"
@@ -56,7 +86,7 @@
                 android:layout_marginRight="20dip" />
     
         <TextView android:id="@+id/notification_volume_title"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/notification_volume_title"
                 android:paddingTop="6dip"
@@ -65,7 +95,7 @@
         
         <!-- Used for the notification volume -->
         <SeekBar android:id="@+id/notification_volume_seekbar"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:paddingTop="6dip" 
                 android:paddingLeft="20dip" 
diff --git a/res/layout/preference_icon.xml b/res/layout/preference_icon.xml
index 03f4e70..e51a73b 100644
--- a/res/layout/preference_icon.xml
+++ b/res/layout/preference_icon.xml
@@ -19,7 +19,7 @@
      type in the "widget_frame" layout. -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+android:id/widget_frame"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:gravity="center_vertical"
diff --git a/res/layout/preference_powergauge.xml b/res/layout/preference_powergauge.xml
index 7aafec1..7de2e20 100644
--- a/res/layout/preference_powergauge.xml
+++ b/res/layout/preference_powergauge.xml
@@ -15,7 +15,7 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:gravity="center_vertical"
@@ -63,7 +63,7 @@
             android:id="@+id/appGauge"
             android:background="#80404040"
             android:layout_height="wrap_content"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_marginTop="5dip"
             android:layout_below="@id/percent"
             android:layout_gravity="center_vertical" />
diff --git a/res/layout/proxy.xml b/res/layout/proxy.xml
index 914d0ea..3ecbb80 100644
--- a/res/layout/proxy.xml
+++ b/res/layout/proxy.xml
@@ -22,7 +22,7 @@
     android:paddingLeft="6dip"
     android:paddingRight="6dip"
     android:paddingBottom="3dip"
-    android:layout_width="fill_parent" android:layout_height="wrap_content">
+    android:layout_width="match_parent" android:layout_height="wrap_content">
 
     <TextView
         android:textStyle="bold"
@@ -34,7 +34,7 @@
     <EditText android:id="@+id/hostname"
         android:maxLines="1"
         android:layout_marginTop="2dip"
-        android:layout_width="fill_parent" android:layout_height="wrap_content"
+        android:layout_width="match_parent" android:layout_height="wrap_content"
         android:autoText="false"
         android:capitalize="none"
         android:scrollHorizontally="true" />
@@ -50,7 +50,7 @@
         android:numeric="integer"
         android:maxLines="1" 
         android:layout_marginTop="2dip"
-        android:layout_width="fill_parent" android:layout_height="wrap_content"
+        android:layout_width="match_parent" android:layout_height="wrap_content"
         android:scrollHorizontally="true" />
 
     <LinearLayout 
@@ -59,17 +59,17 @@
         android:layout_width="wrap_content" android:layout_height="wrap_content">
 
         <Button android:id="@+id/action" 
-            android:layout_width="wrap_content" android:layout_height="fill_parent"
+            android:layout_width="wrap_content" android:layout_height="match_parent"
             android:layout_weight="1"
             android:text="@string/proxy_action_text" />
 
         <Button android:id="@+id/clear" 
-            android:layout_width="wrap_content" android:layout_height="fill_parent"
+            android:layout_width="wrap_content" android:layout_height="match_parent"
             android:layout_weight="1"
             android:text="@string/proxy_clear_text" />
 
         <Button android:id="@+id/defaultView" 
-            android:layout_width="wrap_content" android:layout_height="fill_parent"
+            android:layout_width="wrap_content" android:layout_height="match_parent"
             android:layout_weight="1"
             android:text="@string/proxy_defaultView_text" />
 
diff --git a/res/layout/radio_info.xml b/res/layout/radio_info.xml
index b560fff..e9841d0 100644
--- a/res/layout/radio_info.xml
+++ b/res/layout/radio_info.xml
@@ -18,8 +18,8 @@
 */
 -->
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent" >
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" >
 
     <LinearLayout style="@style/info_layout">
 
@@ -177,49 +177,27 @@
 
         <!-- Preferred Network Type -->
         <TextView
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/radio_info_set_perferred_label"
                 style="@style/info_label"
                 />
 
         <Spinner android:id="@+id/preferredNetworkType"
-                 android:layout_width="fill_parent"
+                 android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                 />
 
-        <!-- Ciphering -->
-        <LinearLayout style="@style/entry_layout">
-            <Button android:id="@+id/ciph_toggle"
-                    android:textSize="14sp"
-                    android:layout_marginTop="8dip"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/radio_info_toggle_ciph_label"
-                    />
-            <TextView android:id="@+id/ciphState" style="@style/info_value" />
-
-        </LinearLayout>
-
-        <!-- QXDM logging & radio power -->
-        <LinearLayout style="@style/entry_layout">
-            <Button android:id="@+id/qxdm_log"
-                    android:textSize="14sp"
-                    android:layout_marginTop="8dip"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    />
-
-            <Button android:id="@+id/radio_power"
+        <!-- Radio Power -->
+        <Button android:id="@+id/radio_power"
                 android:textSize="14sp"
                 android:layout_marginTop="8dip"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 />
-        </LinearLayout>
 
         <!-- SMSC -->
-        <RelativeLayout android:layout_width="fill_parent"
+        <RelativeLayout android:layout_width="match_parent"
                         android:layout_height="wrap_content">
             <TextView android:id="@+id/smsc_label"
                       android:text="@string/radio_info_smsc_label"
@@ -261,5 +239,14 @@
             <TextView android:id="@+id/dnsCheckState" style="@style/info_value" />
         </LinearLayout>
 
+        <!-- Launch OEM-specific Info/Settings Activity (if any) -->
+        <Button android:id="@+id/oem_info"
+                android:textSize="14sp"
+                android:layout_marginTop="8dip"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/oem_radio_info_label"
+                />
+
     </LinearLayout>
 </ScrollView>
diff --git a/res/layout/remember_dock_setting.xml b/res/layout/remember_dock_setting.xml
index a19ca7c..023a912 100644
--- a/res/layout/remember_dock_setting.xml
+++ b/res/layout/remember_dock_setting.xml
@@ -17,7 +17,7 @@
 <CheckBox
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/remember"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="@string/bluetooth_dock_settings_remember"
     android:focusable="true"
diff --git a/res/layout/running_services.xml b/res/layout/running_services.xml
index 120a113..2f464a5 100644
--- a/res/layout/running_services.xml
+++ b/res/layout/running_services.xml
@@ -16,27 +16,27 @@
  -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-	    android:layout_width="fill_parent"
-	    android:layout_height="fill_parent"
+	    android:layout_width="match_parent"
+	    android:layout_height="match_parent"
 	    android:orientation="vertical">
     <FrameLayout
-		    android:layout_width="fill_parent"
+		    android:layout_width="match_parent"
 		    android:layout_height="0px"
 		    android:layout_weight="1">
 	    <ListView android:id="@android:id/list"
-	            android:layout_width="fill_parent" 
-	            android:layout_height="fill_parent"
+	            android:layout_width="match_parent" 
+	            android:layout_height="match_parent"
 	            android:drawSelectorOnTop="false"
 	            android:fastScrollEnabled="true" />
 	    <TextView android:id="@android:id/empty"
-	            android:layout_width="fill_parent"
-	            android:layout_height="fill_parent"
+	            android:layout_width="match_parent"
+	            android:layout_height="match_parent"
 	            android:gravity="center"
 	            android:text="@string/no_running_services"
 	            android:textAppearance="?android:attr/textAppearanceLarge" />
     </FrameLayout>
     <LinearLayout
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
             android:background="?android:attr/colorForeground"
diff --git a/res/layout/running_services_item.xml b/res/layout/running_services_item.xml
index 2728c76..f8a0c97 100644
--- a/res/layout/running_services_item.xml
+++ b/res/layout/running_services_item.xml
@@ -18,7 +18,7 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:orientation="vertical"
@@ -30,7 +30,7 @@
         android:src="?android:attr/listDivider"/>
     
     <LinearLayout
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_weight="1"
         android:orientation="horizontal"
@@ -48,12 +48,12 @@
     
         <LinearLayout
             android:orientation="vertical"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content" >
             <LinearLayout
                 android:orientation="horizontal"
                 android:baselineAlignedChildIndex="0"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content">
 	            <TextView android:id="@+id/name"
 	                android:layout_width="wrap_content"
diff --git a/res/layout/sdcard_settings_screen.xml b/res/layout/sdcard_settings_screen.xml
index 734a5b6..3fa6c9a 100644
--- a/res/layout/sdcard_settings_screen.xml
+++ b/res/layout/sdcard_settings_screen.xml
@@ -19,19 +19,19 @@
 -->
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <LinearLayout android:id="@+id/list"
         android:orientation="vertical"
         android:padding="10dip"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content">
     
         <LinearLayout android:id="@+id/usb"
             android:orientation="vertical"
             android:paddingBottom="10dip"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content">
 
             <CheckBox android:id="@+id/mass_storage"
@@ -46,12 +46,12 @@
         
         <!-- divider line -->
         <View android:background="#FF000000"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="1dip" />
     
         <LinearLayout android:id="@+id/mounted" 
             android:orientation="vertical" 
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:paddingTop="10dip">
             
@@ -72,7 +72,7 @@
                 android:layout_width="wrap_content" android:layout_height="wrap_content" />
     
             <TableLayout
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:paddingTop="10dip">
                 <TableRow>
@@ -105,7 +105,7 @@
 
         <LinearLayout android:id="@+id/shared" 
             android:orientation="vertical" 
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content" 
             android:paddingTop="10dip">
         
diff --git a/res/layout/twelve_key_entry.xml b/res/layout/twelve_key_entry.xml
new file mode 100644
index 0000000..81ead98
--- /dev/null
+++ b/res/layout/twelve_key_entry.xml
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- This is not a standalone element it can be included into apps that need 12-key input -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="64dip"
+        android:layout_marginLeft="2dip"
+        android:layout_marginRight="2dip"
+        android:orientation="horizontal">
+
+        <Button android:id="@+id/one"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textStyle="bold"
+        />
+
+        <Button android:id="@+id/two"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textStyle="bold"
+        />
+
+        <Button android:id="@+id/three"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textStyle="bold"
+        />
+        
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="64dip"
+        android:layout_marginLeft="2dip"
+        android:layout_marginRight="2dip"
+        android:orientation="horizontal">
+
+        <Button android:id="@+id/four"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textStyle="bold"
+        />
+
+        <Button android:id="@+id/five"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textStyle="bold"
+        />
+
+        <Button android:id="@+id/six"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textStyle="bold"
+        />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="64dip"
+        android:layout_marginLeft="2dip"
+        android:layout_marginRight="2dip"
+        android:orientation="horizontal">
+
+        <Button android:id="@+id/seven"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textStyle="bold"
+        />
+
+        <Button android:id="@+id/eight"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textStyle="bold"
+        />
+
+        <Button android:id="@+id/nine"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textStyle="bold"
+        />
+        
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="64dip"
+        android:layout_marginLeft="2dip"
+        android:layout_marginRight="2dip"
+        android:orientation="horizontal">
+
+        <Button android:id="@+id/ok"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textStyle="bold"
+            android:text="@android:string/ok"
+        />
+
+        <Button android:id="@+id/zero"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textStyle="bold"
+        />
+
+        <Button android:id="@+id/cancel"
+            android:layout_width="0sp"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"
+            android:layout_marginLeft="2dip"
+            android:layout_marginRight="2dip"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textStyle="bold"
+            android:text="@android:string/cancel"
+        />
+        
+    </LinearLayout>
+    
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/usage_stats.xml b/res/layout/usage_stats.xml
index 727052d..9ce338c 100755
--- a/res/layout/usage_stats.xml
+++ b/res/layout/usage_stats.xml
@@ -1,24 +1,24 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <TextView
         android:text="@string/display_order_text"
         android:textAppearance="?android:attr/textAppearanceLarge"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content" />
 
     <Spinner
         android:id="@+id/typeSpinner"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:entries="@array/usage_stats_display_order_types" />
 
     <LinearLayout
         android:orientation="horizontal"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content" > 
         <TextView
             android:text="@string/app_name_label"
@@ -39,7 +39,7 @@
             android:layout_height="wrap_content" />
     </LinearLayout>
     <ListView android:id="@+id/pkg_list"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
         android:drawSelectorOnTop="false" />
 </LinearLayout>
diff --git a/res/layout/usage_stats_item.xml b/res/layout/usage_stats_item.xml
index 7ab0090..bdadf85 100755
--- a/res/layout/usage_stats_item.xml
+++ b/res/layout/usage_stats_item.xml
@@ -18,7 +18,7 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal"
     android:minHeight="?android:attr/listPreferredItemHeight">
diff --git a/res/layout/vpn_connect_dialog_view.xml b/res/layout/vpn_connect_dialog_view.xml
index 062f881..3b6d0db 100644
--- a/res/layout/vpn_connect_dialog_view.xml
+++ b/res/layout/vpn_connect_dialog_view.xml
@@ -15,18 +15,18 @@
 -->
 
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:orientation="vertical"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
             android:padding="10dip">
 
         <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:orientation="horizontal"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content">
             <TextView android:id="@+id/username_str"
                     android:layout_width="@dimen/vpn_connect_input_box_label_width"
@@ -36,14 +36,14 @@
                     android:layout_marginRight="@dimen/vpn_connect_margin_right"
                     android:text="@string/vpn_username_colon" />
             <EditText android:id="@+id/username_value"
-                    android:layout_width="fill_parent"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:singleLine="True"/>
         </LinearLayout>
 
         <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:orientation="horizontal"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content">
             <TextView android:id="@+id/password_str"
                     android:layout_width="@dimen/vpn_connect_input_box_label_width"
@@ -53,14 +53,14 @@
                     android:layout_marginRight="@dimen/vpn_connect_margin_right"
                     android:text="@string/vpn_password_colon" />
             <EditText android:id="@+id/password_value"
-                    android:layout_width="fill_parent"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:password="True"
                     android:singleLine="True"/>
         </LinearLayout>
 
         <CheckBox android:id="@+id/save_username"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="66dip"
                 android:text="@string/vpn_save_username" />
diff --git a/res/layout/widget.xml b/res/layout/widget.xml
index 1e22dbe..210fcc1 100644
--- a/res/layout/widget.xml
+++ b/res/layout/widget.xml
@@ -16,8 +16,8 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/main"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
     android:gravity="center"
     android:background="@drawable/appwidget_bg" >
 
@@ -25,7 +25,7 @@
         android:id="@+id/btn_wifi"
         android:layout_width="0dip"
         android:layout_weight="1"
-        android:layout_height="fill_parent"
+        android:layout_height="match_parent"
         android:background="@drawable/appwidget_button_left"
         android:clickable="true"
         android:focusable="true"
@@ -33,7 +33,7 @@
 
         <ImageView
             android:id="@+id/img_wifi"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dip"
             android:layout_weight="1"
             android:scaleType="center"
@@ -41,7 +41,7 @@
 
         <ImageView
             android:id="@+id/ind_wifi"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:scaleType="fitXY"
             />
@@ -49,7 +49,7 @@
 
     <ImageView
         android:layout_width="1dip"
-        android:layout_height="fill_parent"
+        android:layout_height="match_parent"
         android:background="@drawable/appwidget_settings_divider"
         />
 
@@ -57,7 +57,7 @@
         android:id="@+id/btn_bluetooth"
         android:layout_width="0dip"
         android:layout_weight="1"
-        android:layout_height="fill_parent"
+        android:layout_height="match_parent"
         android:background="@drawable/appwidget_button_center"
         android:clickable="true"
         android:focusable="true"
@@ -65,7 +65,7 @@
 
         <ImageView
             android:id="@+id/img_bluetooth"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dip"
             android:layout_weight="1"
             android:scaleType="center"
@@ -73,7 +73,7 @@
 
         <ImageView
             android:id="@+id/ind_bluetooth"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:scaleType="fitXY"
             />
@@ -82,7 +82,7 @@
 
     <ImageView
         android:layout_width="1dip"
-        android:layout_height="fill_parent"
+        android:layout_height="match_parent"
         android:background="@drawable/appwidget_settings_divider"
         />
 
@@ -90,7 +90,7 @@
         android:id="@+id/btn_gps"
         android:layout_width="0dip"
         android:layout_weight="1"
-        android:layout_height="fill_parent"
+        android:layout_height="match_parent"
         android:background="@drawable/appwidget_button_center"
         android:clickable="true"
         android:focusable="true"
@@ -98,7 +98,7 @@
 
         <ImageView
             android:id="@+id/img_gps"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dip"
             android:layout_weight="1"
             android:scaleType="center"
@@ -106,7 +106,7 @@
 
         <ImageView
             android:id="@+id/ind_gps"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:scaleType="fitXY"
             />
@@ -114,7 +114,7 @@
 
     <ImageView
         android:layout_width="1dip"
-        android:layout_height="fill_parent"
+        android:layout_height="match_parent"
         android:background="@drawable/appwidget_settings_divider"
         />    
 
@@ -122,7 +122,7 @@
         android:id="@+id/btn_sync"
         android:layout_width="0dip"
         android:layout_weight="1"
-        android:layout_height="fill_parent"
+        android:layout_height="match_parent"
         android:background="@drawable/appwidget_button_center"
         android:clickable="true"
         android:focusable="true"
@@ -130,7 +130,7 @@
 
         <ImageView
             android:id="@+id/img_sync"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dip"
             android:layout_weight="1"
             android:scaleType="center"
@@ -138,7 +138,7 @@
 
         <ImageView
             android:id="@+id/ind_sync"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:scaleType="fitXY"
             />
@@ -146,7 +146,7 @@
 
     <ImageView
         android:layout_width="1dip"
-        android:layout_height="fill_parent"
+        android:layout_height="match_parent"
         android:background="@drawable/appwidget_settings_divider"
         />
 
@@ -154,7 +154,7 @@
         android:id="@+id/btn_brightness"
         android:layout_width="0dip"
         android:layout_weight="1"
-        android:layout_height="fill_parent"
+        android:layout_height="match_parent"
         android:background="@drawable/appwidget_button_right"
         android:clickable="true"
         android:focusable="true"
@@ -162,7 +162,7 @@
 
         <ImageView
             android:id="@+id/img_brightness"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="0dip"
             android:layout_weight="1"
             android:scaleType="center"
@@ -170,7 +170,7 @@
 
         <ImageView
             android:id="@+id/ind_brightness"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:scaleType="fitXY"
             />
diff --git a/res/layout/wifi_ap_configure.xml b/res/layout/wifi_ap_configure.xml
index f816ae5..3f8fbba 100644
--- a/res/layout/wifi_ap_configure.xml
+++ b/res/layout/wifi_ap_configure.xml
@@ -15,19 +15,19 @@
 -->
 
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content">
         
     <LinearLayout
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:padding="8dip"
             android:orientation="vertical"> 
     
             <LinearLayout
                 android:id="@+id/table"
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
                 android:orientation="vertical">
             </LinearLayout>
 
@@ -36,12 +36,12 @@
     
         <TextView android:id="@+id/ssid_text"
                 style="?android:attr/textAppearanceSmallInverse"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/wifi_type_ssid" />
 
         <EditText android:id="@+id/ssid_edit"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="2dip"
                 android:singleLine="true"
@@ -51,79 +51,79 @@
         
         <TextView android:id="@+id/security_text"
                 style="?android:attr/textAppearanceSmallInverse"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="8dip"
                 android:text="@string/wifi_security" />
             
         <!-- The entries will be set programmatically -->
         <Spinner android:id="@+id/security_spinner"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content" />
 
         <!-- Enterprise Fields -->
         <LinearLayout android:id="@+id/enterprise_wrapper"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:padding="0dip"
             android:orientation="vertical">
                 <TextView android:id="@+id/eap_text"
                         style="?android:attr/textAppearanceSmallInverse"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="8dip"
                         android:text="@string/please_select_eap" />
                 <Spinner android:id="@+id/eap_spinner"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content" />
                 <TextView android:id="@+id/phase2_text"
                         style="?android:attr/textAppearanceSmallInverse"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="8dip"
                         android:text="@string/please_select_phase2" />
                 <Spinner android:id="@+id/phase2_spinner"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content" />
 
                 <TextView android:id="@+id/ca_certificate_text"
                         style="?android:attr/textAppearanceSmallInverse"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="8dip"
                         android:text="@string/please_select_ca_certificate" />
                 <Spinner android:id="@+id/ca_certificate_spinner"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content" />
                 <TextView android:id="@+id/client_certificate_text"
                         style="?android:attr/textAppearanceSmallInverse"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="8dip"
                         android:text="@string/please_select_client_certificate" />
                 <Spinner android:id="@+id/client_certificate_spinner"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content" />
                 <TextView android:id="@+id/identity_text"
                         style="?android:attr/textAppearanceSmallInverse"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="8dip"
                         android:text="@string/please_type_identity" />
                 <EditText android:id="@+id/identity_edit"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="2dip"
                         android:singleLine="true"
                         android:inputType="textNoSuggestions" />
                 <TextView android:id="@+id/anonymous_identity_text"
                         style="?android:attr/textAppearanceSmallInverse"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="8dip"
                         android:text="@string/please_type_anonymous_identity" />
                 <EditText android:id="@+id/anonymous_identity_edit"
-                        android:layout_width="fill_parent"
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="2dip"
                         android:singleLine="true" />
@@ -133,13 +133,13 @@
         
         <TextView android:id="@+id/password_text"
                 style="?android:attr/textAppearanceSmallInverse"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="8dip"
                 android:text="@string/please_type_passphrase" />
             
         <EditText android:id="@+id/password_edit"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="2dip"
                 android:singleLine="true"
@@ -147,13 +147,13 @@
     
         <CheckBox android:id="@+id/show_password_checkbox"
                 style="?android:attr/textAppearanceSmallInverse"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="2dip"
                 android:text="@string/wifi_show_password" />
                 
         <Spinner android:id="@+id/wep_type_spinner"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:entries="@array/wifi_wep_type" />
             
diff --git a/res/layout/wifi_ap_info.xml b/res/layout/wifi_ap_info.xml
index 8c430fc..d38a831 100644
--- a/res/layout/wifi_ap_info.xml
+++ b/res/layout/wifi_ap_info.xml
@@ -15,19 +15,19 @@
 -->
 
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content">
         
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:padding="8dip"
             android:orientation="vertical"> 
     
         <LinearLayout
                 android:id="@+id/table"
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
                 android:orientation="vertical">
         
         <!-- Info dynamically added here. -->
@@ -37,13 +37,13 @@
         <!-- Password -->
         <TextView android:id="@+id/password_text"
                 style="?android:attr/textAppearanceSmallInverse"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="8dip"
                 android:text="@string/please_type_passphrase" />
             
         <EditText android:id="@+id/password_edit"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="2dip"
                 android:singleLine="true"
@@ -51,7 +51,7 @@
     
         <CheckBox android:id="@+id/show_password_checkbox"
                 style="?android:attr/textAppearanceSmallInverse"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="2dip"
                 android:text="@string/wifi_show_password" />
diff --git a/res/layout/wifi_ap_info_row.xml b/res/layout/wifi_ap_info_row.xml
index 79064b0..dfc4ca8 100644
--- a/res/layout/wifi_ap_info_row.xml
+++ b/res/layout/wifi_ap_info_row.xml
@@ -15,7 +15,7 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content">
     <TextView
             android:id="@+id/name"
diff --git a/res/layout/wifi_ap_retry_password.xml b/res/layout/wifi_ap_retry_password.xml
index 14a4eae..d460d8e 100644
--- a/res/layout/wifi_ap_retry_password.xml
+++ b/res/layout/wifi_ap_retry_password.xml
@@ -15,31 +15,31 @@
 -->
 
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content">
         
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:padding="8dip"
             android:orientation="vertical"> 
     
         <TextView
                 style="?android:attr/textAppearanceSmallInverse"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/wifi_password_incorrect_error" />
                     
         <!-- Password -->
         <TextView android:id="@+id/password_text"
                 style="?android:attr/textAppearanceSmallInverse"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="8dip"
                 android:text="@string/please_type_passphrase" />
             
         <EditText android:id="@+id/password_edit"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="2dip"
                 android:singleLine="true"
@@ -47,7 +47,7 @@
     
         <CheckBox android:id="@+id/show_password_checkbox"
                 style="?android:attr/textAppearanceSmallInverse"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="2dip"
                 android:text="@string/wifi_show_password" />
diff --git a/res/layout/wifi_api_test.xml b/res/layout/wifi_api_test.xml
new file mode 100644
index 0000000..b3ad18a
--- /dev/null
+++ b/res/layout/wifi_api_test.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:title="@string/wifi_settings_category">
+
+    <Preference
+            android:key="disable_network"
+            android:title="@string/disableNetwork"
+            android:persistent="false" />
+
+    <Preference
+            android:key="disconnect"
+            android:title="@string/disconnect"
+            android:persistent="false" />
+
+    <Preference
+            android:key="enable_network"
+            android:title="@string/enableNetwork"
+            android:persistent="false" />
+
+    <Preference
+            android:key="getConfiguredNetworks"
+            android:title="@string/getConfiguredNetworks"
+            android:persistent="false" />
+
+    <Preference
+            android:key="getConnectionInfo"
+            android:title="@string/getConnectionInfo"
+            android:persistent="false" />
+
+
+</PreferenceScreen>
diff --git a/res/layout/wifi_config_info.xml b/res/layout/wifi_config_info.xml
new file mode 100644
index 0000000..c95eb6a
--- /dev/null
+++ b/res/layout/wifi_config_info.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" >
+
+
+    <LinearLayout style="@style/info_layout">
+
+        <LinearLayout style="@style/entry_layout">
+                <TextView android:text="@string/config_list_label" style="@style/info_label" />
+        </LinearLayout>
+
+        <LinearLayout style="@style/entry_layout">
+                <TextView android:id="@+id/config_list" style="@style/info_value" />
+        </LinearLayout>
+    </LinearLayout>
+
+</ScrollView>
+
diff --git a/res/layout/wifi_status_test.xml b/res/layout/wifi_status_test.xml
new file mode 100644
index 0000000..2bdfbfc
--- /dev/null
+++ b/res/layout/wifi_status_test.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" >
+
+
+    <LinearLayout style="@style/info_layout">
+
+        <!-- Update Button -->
+        <Button android:id="@+id/update"
+                android:textSize="14sp"
+                android:layout_marginTop="8dip"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/wifi_update"
+                />
+
+        <!--Wifi State-->
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/wifi_state_label" style="@style/info_label" />
+            <TextView android:id="@+id/wifi_state" style="@style/info_value" />
+        </LinearLayout>
+
+        <!--Network State-->
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/network_state_label" style="@style/info_label" />
+            <TextView android:id="@+id/network_state" style="@style/info_value" />
+        </LinearLayout>
+
+        <!--Supplicant State-->
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/supplicant_state_label" style="@style/info_label" />
+            <TextView android:id="@+id/supplicant_state" style="@style/info_value" />
+        </LinearLayout>
+
+        <!--RSSI Value-->
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/rssi_label" style="@style/info_label" />
+            <TextView android:id="@+id/rssi" style="@style/info_value" />
+        </LinearLayout>
+
+        <!--BSSID Value-->
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/bssid_label" style="@style/info_label" />
+            <TextView android:id="@+id/bssid" style="@style/info_value" />
+        </LinearLayout>
+
+        <!--SSID Value-->
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/ssid_label" style="@style/info_label" />
+            <TextView android:id="@+id/ssid" style="@style/info_value" />
+        </LinearLayout>
+
+
+        <!--Hidden SSID Value-->
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/hidden_ssid_label" style="@style/info_label" />
+            <TextView android:id="@+id/hidden_ssid" style="@style/info_value" />
+        </LinearLayout>
+
+        <!--IP address Value-->
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/ipaddr_label" style="@style/info_label" />
+            <TextView android:id="@+id/ipaddr" style="@style/info_value" />
+        </LinearLayout>
+
+        <!--MAC address Value-->
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/macaddr_label" style="@style/info_label" />
+            <TextView android:id="@+id/macaddr" style="@style/info_value" />
+        </LinearLayout>
+
+        <!--Network ID Value-->
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/networkid_label" style="@style/info_label" />
+            <TextView android:id="@+id/networkid" style="@style/info_value" />
+        </LinearLayout>
+
+        <!--Link Speed Value-->
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/link_speed_label" style="@style/info_label" />
+            <TextView android:id="@+id/link_speed" style="@style/info_value" />
+        </LinearLayout>
+
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/scan_list_label" style="@style/info_label" />
+            <TextView android:id="@+id/scan_list" style="@style/info_value" />
+        </LinearLayout>
+
+        <!-- Ping stats -->
+        <Button android:id="@+id/ping_test"
+                android:textSize="14sp"
+                android:layout_marginTop="8dip"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/ping_test_label"
+                />
+
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/radio_info_ping_ipaddr" style="@style/info_label" />
+            <TextView android:id="@+id/pingIpAddr" style="@style/info_value" />
+        </LinearLayout>
+
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/radio_info_ping_hostname" style="@style/info_label" />
+            <TextView android:id="@+id/pingHostname" style="@style/info_value" />
+        </LinearLayout>
+
+        <LinearLayout style="@style/entry_layout">
+            <TextView android:text="@string/radio_info_http_client_test" style="@style/info_label" />
+            <TextView android:id="@+id/httpClientTest" style="@style/info_value" />
+        </LinearLayout>
+
+    </LinearLayout>
+</ScrollView>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 800d27e..17556c8 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Neznámé"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Zapnout rádio"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Vypnout rádio"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Povolit protokol QXDM SD"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Zakázat protokol QXDM SD"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Zobrazit adresář karty SIM"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Zobrazit povolená telefonní čísla"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Zobrazit čísla volání služeb"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Získat seznam PDP"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Povolit připojení datových služeb"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Zakázat připojení datových služeb"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Povolit startovací data"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Zakázat startovací data"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"V provozu"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Nepokrytá oblast"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Pouze tísňová volání"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Použít test Ping na IpAddr:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Provést test Ping hostitele (www.google.cz):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"Test klienta HTTP:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Přepnout šifrování"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Spustit test Ping"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Aktualizovat"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Obnovit"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Přepnout kontrolu DNS"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Nastavit pásmo pro GSM a UMTS"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Načítání seznamu pásem..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Nastavit"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Odpojování..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Odpojeno"</string>
     <string name="status_failed" msgid="610462050405904601">"Připojení se nezdařilo."</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Obraz a zvuk"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Nastavení obrazu a zvuku"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Nastavení zvuku"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Umožňuje nastavit vyzváněcí tón, oznámení a jas obrazovky"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Tichý režim"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Ztiší všechny zvuky kromě médií a budíků"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Všechny zvuky kromě médií jsou ztišeny."</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Zvolit vyzváněcí tón oznámení"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Hlasitost médií"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Umožňuje nastavit hlasitost hudby a videí"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Zvuk doku"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Nastavení zvuku pro připojený dok"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Dotyky jsou provázeny zvuky"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Tlačítka číselníku jsou provázena zvuky"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Přehrát zvuk při oznámení karty SD"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Potlačení hluku"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Při hovoru nebo nahrávání potlačí okolní hluk."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Dok"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Nastavení doku"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Zvuk"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Nastavení připojeného stolního doku"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Nastavení připojeného doku do auta"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Telefon není vložen do doku"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Nastavení připojeného doku"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Dok nebyl nalezen"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"Chcete-li konfigurovat zvuk doku, musí v něm být telefon vložen."</string>
     <string name="sync_settings" msgid="9186125469300013491">"Účty a synchronizace"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Umožňuje přidat nebo odebrat účty a změnit jejich nastavení"</string>
     <string name="search_settings" msgid="1910951467596035063">"Vyhledávání"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Celková paměť"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Odpojit kartu SD"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Odpojit kartu SD za účelem bezpečného odebrání"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Formátovat kartu SD"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Formátovat (vymazat) kartu SD"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Nedostupný údaj"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Správa aplikací a klávesových zkratek rychlého spuštění"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Nastavení aplikace"</string>
     <string name="install_applications" msgid="4872012136210802181">"Neznámé zdroje"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Povoluje instalaci aplikací, které nepocházejí ze služby Market"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Váš telefon a osobní údaje jsou zranitelnější vůči útoku aplikací z neznámých zdrojů. Vyjadřujete souhlas, že nesete osobní odpovědnost za jakékoli škody způsobené na vašem telefonu nebo za ztrátu dat v důsledku používání těchto aplikací."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Info o aplikaci"</string>
     <string name="storage_label" msgid="8700867073480107253">"Paměť"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Žádné nainstalované služby usnadnění."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Tato služba usnadnění může shromažďovat veškerý text, který napíšete, včetně osobních údajů a čísel kreditních karet, nikoli však hesla. Může také protokolovat vaše interakce s uživatelským rozhraním. Služba pochází z aplikace <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Chcete tuto službu usnadnění použít?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Deaktivovat usnadnění?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Využití baterie"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Co využívá baterii"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Využití baterie od odpojení"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Vždy používat moje nastavení"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Výchozí nastavení níže přepíše nastavení jednotlivých aplikací"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Výchozí nastavení"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Rychlost řeči"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Rychlost mluveného textu"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Výška"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Ovládací prvek napájení"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Probíhá aktualizace nastavení Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Probíhá aktualizace nastavení Bluetooth"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Program na instalaci pověření"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"Nastavení sítě VPN"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Připojit k síti <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Uživatelské jméno:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Úložiště pověření je vymazáno."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Úložiště pověření je aktivováno."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Úložiště pověření je deaktivováno."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Tísňové vyzvánění"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Nastavit chování při tísňovém volání"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Ochrana osobních údajů"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index c8d12db..0b5abc2 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Ukendt"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Slå radio til"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Slå radio fra"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Aktiver QXDM SD-log"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Deaktiver QXDM SD-log"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Vis adressebog på SIM-kortet"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Vis faste opkaldsnumre"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Vis tjenesten faste opkaldsnumre"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Hent PDP-liste"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Aktiver dataforbindelse"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Deaktiver dataforbindelse"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Aktiver data ved start"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Deaktiver data ved start"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"I drift"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Ude af drift"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Kun nødopkald"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Ping-IpAdr.:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Ping-værtsnavn(www.google.com):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"HTTP-klienttest:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Skift nummer"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Kør ping-test"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Opdater"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Opdater"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Skift DNS-kontrol"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Angiv GSM/UMTS-bånd"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Indlæser båndliste ..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Indstil"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Afbryder ..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Afbrudt"</string>
     <string name="status_failed" msgid="610462050405904601">"Mislykkedes"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Lyd og visning"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Indstillinger for lyd og visning"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Indstillinger for lyd"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Angiv ringetoner, meddelelser, skærmlysstyrke"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Lydløs"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Alle lyde undtagen medier og alarmer er slået fra"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Al lyd undtagen medier er slået fra"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Vælg ringetone for meddelelser"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Lydstyrke for medier"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Angiv lydstyrke for musik og videoer"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Dock audio"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Lydindstillinger til den fastgjorte dock"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Hørbare touch-toner"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Afspil toner, når nummerblokken bruges"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Afspil lyd for meddelelser om SD-kort"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Støjdæmpning"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Dæmp baggrundsstøj under tale og optagelse"</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Dockingstation"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Indstillinger for dockingstation"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Lyd"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Indstillinger for den dockingstation der er tilsluttet din computer"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Indstillinger for den dockingstation der er tilsluttet bilen"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Telefonen er ikke tilsluttet dockingstationen"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Indstillinger for den dockingstation der er tilsluttet"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Dockingstationen blev ikke fundet"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"Telefonen skal være sluttet til dockingstationen for at lyden kan konfigureres"</string>
     <string name="sync_settings" msgid="9186125469300013491">"Konti og synkronisering"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Tilføj eller fjern konti, og skift indstillinger for konto"</string>
     <string name="search_settings" msgid="1910951467596035063">"Søg"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Plads i alt"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Demonter SD-kort"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Demonter SD-kortet til sikker fjernelse"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Formater SD-kort"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Formater (slet) SD-kortet"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Utilgængelig"</string>
@@ -572,8 +562,8 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Se placering i programmer (som f.eks. Maps) ved hjælp af trådløse netværk"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Placering afgøres af Wi-Fi og/eller mobile netværk"</string>
     <string name="location_gps" msgid="6296125378829097831">"Brug GPS-satellitter"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Præcis placering på gadeplan (slå fra for at spare på batteriet)"</string>
-    <string name="location_gps_disabled" msgid="6632537158777308128">"Placering på gadeplan (mere batterikrævende, skal bruges i det fri)"</string>
+    <string name="location_street_level" msgid="6460740847018275745">"Præcis placering på gadeniveau (slå fra for at spare på batteriet)"</string>
+    <string name="location_gps_disabled" msgid="6632537158777308128">"Placering på gadeniveau (mere batterikrævende, skal bruges i det fri)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Brug assisteret GPS"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Brug serveren til at assistere GPS (fjern markering for at mindske netværksforbrug)"</string>
     <string name="assisted_gps_disabled" msgid="6982698333968010748">"Brug serveren til at assistere GPS (fjern markering for at forbedre GPS-ydelsen)"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Administ. programmer, konf. genveje til hurtig start"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Indstillinger for program"</string>
     <string name="install_applications" msgid="4872012136210802181">"Ukendte kilder"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Tillad installation af programmer, der ikke stammer fra Marked"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Din telefon og dine personlige oplysninger er mere sårbare over for angreb af programmer fra ukendte kilder. Du accepterer, at du alene er ansvarlig for skader på din telefon eller tab af data, der kan skyldes brug af disse programmer."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Programoplysninger"</string>
     <string name="storage_label" msgid="8700867073480107253">"Lagring"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Der er ikke installeret nogen tilgængelighedstjenester."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Denne tilgængelighedstjeneste vil muligvis være i stand til at indsamle al den tekst, du indtaster, inklusive personlige oplysninger og kreditkortoplysninger, men ikke adgangskoder. Den kan også registrere dine brugergrænsefladeinteraktioner. Den kommer fra programmet <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Vil du bruge denne tilgængelighedstjeneste?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Deaktiver tilgængelighed?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Batteriforbrug"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Hvad der har brugt batteriet"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Batteriforbrug siden afbrydelse"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Brug altid mine indstil."</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Nedenstående standardindstillinger tilsidesætter programindstillingerne"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Standardindstillinger"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Talehastighed"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Oplæsningshastighed for tekst"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Tonehøjde"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Strømkontrol"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Opdaterer indstillinger for Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Opdaterer Bluetooth-indstilling"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Installationsprogram til oplysninger"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN-indstillinger"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Opret forbindelse til <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Brugernavn:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Oplysningslagringen er slettet."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Oplysningslagring er aktiveret."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Oplysningslagring er deaktiveret."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Nødtone"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Angiv adfærd ved nødopkald"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Fortrolighed"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index a283a83..dd25ee6 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Unbekannt"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Mobilfunkverbindung aktivieren"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Mobilfunkverbindung deaktivieren"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"QXDM-SD-Protokoll aktivieren"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"QXDM-SD-Protokoll deaktivieren"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"SIM-Adressbuch anzeigen"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Begrenzte Rufnummern anzeigen"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Servicerufnummern anzeigen"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"PDP-Liste abrufen"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Datenverbindung aktivieren"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Datenverbindung deaktivieren"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Daten beim Start aktivieren"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Daten beim Start deaktivieren"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"In Betrieb"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Außer Betrieb"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Nur Notrufe"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"IP-Adresse pingen:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Hostnamen pingen (www.google.com):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"HTTP Client-Test:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Verschlüsselung wechseln"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Pingtest ausführen"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Aktualisierung"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Aktualisieren"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"DNS-Überprüfung ein-/ausschalten"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"GSM-/UMTS-Band festlegen"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Bandliste wird geladen..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Festlegen"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Verbindung wird getrennt..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Nicht verbunden"</string>
     <string name="status_failed" msgid="610462050405904601">"Fehlgeschlagen"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Sound und Display"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Einstellungen für Sound &amp; Display"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Toneinstellungen"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Klingeltöne, Benachrichtigungen und Helligkeit festlegen"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Lautlosmodus"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Alle Töne außer für Medien und Warnungen sind stummgeschaltet"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Alle Sounds außer Medien sind stumm geschaltet"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Benachrichtigungston auswählen"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Medienlautstärke"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Lautstärke für Musik und Videos festlegen"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Dock-Audio"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Audioeinstellungen für angeschlossenen Dock"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Tastentöne"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Töne bei Telefonwahl"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Ton bei SD-Karten-Benachrichtigungen"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Geräuschunterdrückung"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Geräusche beim Sprechen oder Aufnehmen unterdrücken"</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Dock"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Dock-Einstellungen"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Audio"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Einstellungen für angeschlossenen Desktop-Dock"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Einstellungen für angeschlossenen Kfz-Dock"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Telefon nicht angedockt"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Einstellungen für angeschlossenen Dock"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Dock nicht gefunden"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"Zur Konfiguration des Dock-Audios muss das Telefon angedockt sein."</string>
     <string name="sync_settings" msgid="9186125469300013491">"Konten und Synchronisierung"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Konten hinzufügen und entfernen und Kontoeinstellungen ändern"</string>
     <string name="search_settings" msgid="1910951467596035063">"Suchen"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Gesamtspeicher"</string>
     <string name="sd_eject" msgid="6915293408836853020">"SD-Karte entnehmen"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"SD-Karte sicher entfernen"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"SD-Karte formatieren"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"SD-Karte formatieren (löschen)"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Nicht verfügbar"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Anwendungen verwalten, Tastenkombinationen für Schnellstart"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Anwendungen"</string>
     <string name="install_applications" msgid="4872012136210802181">"Unbekannte Quellen"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Installation von Nicht-Market-Anwendungen zulassen"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Anwendungen aus unbekannten Quellen können gefährlich für Ihr Telefon und Ihre persönlichen Daten sein. Sie stimmen zu, dass Sie die Verantwortung für alle Schäden an Ihrem Telefon oder jegliche Datenverluste tragen, die aus der Verwendung dieser Anwendungen entstehen können."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Anwendungsinfo"</string>
     <string name="storage_label" msgid="8700867073480107253">"Speicher"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Keine Eingabehilfen installiert"</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Diese Eingabehilfe kann den gesamten von Ihnen eingegebenen Text erfassen, einschließlich persönlicher Daten wie Kreditkartennummern, jedoch keine Passwörter. Sie kann auch Ihre Interaktionen auf der Benutzeroberfläche protokollieren. Sie ist Teil der Anwendung <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Soll diese Eingabehilfe aktiviert werden?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Eingabehilfe deaktivieren?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Akkuverbrauch"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Akkuverbraucher"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Akkuverbrauch seit dem Ausstecken"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Immer meine Einst. verwenden"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Standardeinstellungen überschreiben Anwendungseinstellungen"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Standardeinstellungen"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Sprechgeschwindigkeit"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Geschwindigkeit, mit der der Text gesprochen wird"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Tonlage"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Energiesteuerung"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Aktualisieren der WLAN-Einstellung"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Aktualisieren der Bluetooth-Einstellung"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Installation der Zugangsdaten"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN-Einstellungen"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Mit <xliff:g id="NAME">%s</xliff:g> verbinden"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Nutzername:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Der Speicher für die Anmeldeinformationen wurde gelöscht."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Der Anmeldeinformationsspeicher ist aktiviert."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Der Anmeldeinformationsspeicher ist deaktiviert."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Notfallsignal"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Verhalten bei einem Notruf festlegen"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Datenschutz"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index d61279b..18a8df5 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Άγνωστο"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Ενεργοποίηση πομπού"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Απενεργοποίηση πομπού"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Ενεργοποίηση αρχείου καταγραφής QXDM SD"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Απενεργοποίηση αρχείου καταγραφής QXDM SD"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Προβολή βιβλίου διευθύνσεων κάρτας SIM"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Προβολή καθορισμένων αριθμών κλήσης"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Προβολή αριθμών κλήσης υπηρεσίας"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Λήψη λίστας PDP"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Ενεργοποίηση σύνδεσης δεδομένων"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Απενεργοποίηση σύνδεσης δεδομένων"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Ενεργοποίηση δεδομένων κατά την εκκίνηση"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Απενεργοποίηση δεδομένων κατά την εκκίνηση"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"Σε υπηρεσία"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Εκτός υπηρεσίας"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Μόνο κλήσεις έκτακτης ανάγκης"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Ping IpAddr:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Εκτέλεση εντολής ping σε όνομα κεντρικού υπολογιστή (www.google.gr):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"Δοκιμή HTTP πελάτη:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Ενεργοποίηση κρυπτογράφησης"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Εκτέλεση δοκιμής ping"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Ενημέρωση"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Ανανέωση"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Αλλαγή ελέγχου DNS"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Ορισμός ζώνης GSM/UMTS"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Φόρτωση λίστας ζωνών..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Ορισμός"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Αποσύνδεση..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Αποσυνδέθηκε"</string>
     <string name="status_failed" msgid="610462050405904601">"Ανεπιτυχής"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Ήχος και εικόνα"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Ρυθμίσεις ήχου &amp; προβολής"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Ρυθμίσεις ήχου"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Ρύθμιση ήχων κλήσης, ειδοποιήσεων, φωτεινότητας οθόνης"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Λειτουργία σίγασης"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Όλοι οι ήχοι εκτός των πολυμέσων &amp; ξυπνητηριών έχουν σιγασθεί"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Όλοι οι ήχοι εκτός από τους ήχους πολυμέσων έχουν σιγασθεί"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Επιλογή ήχου κλήσης ειδοποίησης"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Ένταση ήχου πολυμέσων"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Ορισμός έντασης ήχου για μουσική και βίντεο"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Ήχος βάσης σύνδεσης αυτοκινήτου"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Ρυθμίσεις ήχου για τη συνδεδεμένη βάση σύνδεσης αυτοκινήτου"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Ήχοι αγγίγματος οθόνης"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Αναπαραγωγή ήχων κατά τη χρήση του πληκτρολογίου κλήσης"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Αναπαραγωγή ήχου για τις προειδοποιήσεις κάρτας SD"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Εξουδετέρωση θορύβου"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Εξάλειψη θορύβου παρασκηνίου κατά τη διάρκεια ομιλίας ή εγγραφής."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Βάση σύνδεσης"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Ρυθμίσεις βάσης σύνδεσης"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Ήχος"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Ρυθμίσεις για τη συνδεδεμένη βάση σύνδεσης υπολογιστή"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Ρυθμίσεις για τη συνδεδεμένη βάση σύνδεσης αυτοκινήτου"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Το τηλέφωνο δεν βρίσκεται στη βάση σύνδεσής του"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Ρυθμίσεις για τη συνδεδεμένη βάσης σύνδεσης"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Η βάση σύνδεσης δεν βρέθηκε"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"Το τηλέφωνο πρέπει να βρίσκεται στη βάση σύνδεσής του για τη διαμόρφωση του ήχου βάσης σύνδεσης"</string>
     <string name="sync_settings" msgid="9186125469300013491">"Λογαριασμοί &amp; συγχρονισμός"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Προσθήκη ή κατάργηση λογαριασμών και αλλαγή ρυθμίσεων λογαριασμού"</string>
     <string name="search_settings" msgid="1910951467596035063">"Αναζήτηση"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Συνολικός χώρος"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Αφαίρεση κάρτας SD"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Αποπροσαρτήστε την κάρτα SD για ασφαλή αφαίρεση"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Διαμόρφωση κάρτας SD"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Διαμόρφωση (διαγραφή) της κάρτας SD"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Μη διαθέσιμο"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Διαχείριση εφαρμογών, ορισμός συντομεύσεων γρήγορης εκκίνησης"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Ρυθμίσεις εφαρμογών"</string>
     <string name="install_applications" msgid="4872012136210802181">"Άγνωστες πηγές"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Επιτρ.την εγκατ.εφαρμ.που δεν βρίσκ.στο Android Market"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Το τηλέφωνό σας και τα προσωπικά δεδομένα σας είναι ευάλωτα σε επιθέσεις από εφαρμογές που προέρχονται από άγνωστες πηγές. Συμφωνείτε ότι είστε οι μοναδικοί υπεύθυνοι για κάθε ζημιά στο τηλέφωνο ή για απώλεια δεδομένων που ενδέχεται να προκύψουν από τη χρήση τέτοιων εφαρμογών."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Πληροφορίες εφαρμογής"</string>
     <string name="storage_label" msgid="8700867073480107253">"Αποθηκευτικός χώρος"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Καμία εγκατεστημένη υπηρεσία προσβασιμότητας."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Αυτή η υπηρεσία προσβασιμότητας ενδέχεται να έχει τη δυνατότητα συλλογής όλων των κειμένων που πληκτρολογείτε, συμπεριλαμβανομένων των προσωπικών δεδομένων και των αριθμών πιστωτικών καρτών εκτός των κωδικών πρόσβασης. Ενδέχεται επίσης να καταγράφει τις δραστηριότητες της επιφάνειας χρήστη. Αυτή η λειτουργία προέρχεται από την εφαρμογή <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Να χρησιμοποιηθεί αυτή η υπηρεσία προσβασιμότητας;"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Να απενεργοποιηθεί η προσβασιμότητα;"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Χρήση μπαταρίας"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Τι χρησιμοποιούσε την μπαταρία"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Χρήση μπαταρίας από τη στιγμή της αποσύνδεσης από την τροφοδοσία"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Χρήση των ρυθμίσεών μου πάντα"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Οι παρακάτω προεπιλεγμένες ρυθμίσεις αντιγράφουν τις ρυθμίσεις της εφαρμογής"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Προεπιλεγμένες ρυθμίσεις"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Ταχύτητα λόγου"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Ταχύτητα με την οποία εκφωνείται το κείμενο"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Τόνος"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Έλεγχος ισχύος"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Ενημέρωση ρύθμισης Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Ενημέρωση ρύθμισης Bluetooth"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Πρόγραμμα εγκατάστασης διαπιστευτηρίων"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"Ρυθμίσεις VPN"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Σύνδεση στο <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Όνομα χρήστη:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Αυτός ο χώρος αποθήκευσης διαπιστευτηρίων διαγράφτηκε."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Ο χώρος αποθήκευσης διαπιστευτηρίων ενεργοποιήθηκε."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Ο χώρος αποθήκευσης διαπιστευτηρίων απενεργοποιήθηκε."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Τόνος επείγουσας ανάγκης"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Ορισμός συμπεριφοράς κατά την πραγματοποίηση κλήσης επείγουσας ανάγκης"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Απόρρητο"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 67fa3d0..c8cb423 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Desconocido"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Encender la radio"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Apagar la radio"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Activar el registro SD de QXDM"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Desactivar el registro SD de QXDM"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Ver libreta de direcciones de SIM"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Ver números fijos"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Ver números del servicio técnico"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Obtener lista PDP"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Activar la conexión de datos"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Desactivar conexión de datos"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Activar datos durante el reinicio"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Desactivar datos durante el reinicio"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"En servicio"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Fuera de servicio"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Sólo llamadas de emergencia"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Buscar direcciones de Internet de IpAddr:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Buscar direcciones de Internet del nombre del servidor (www.google.com):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"Prueba de cliente HTTP:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Cambiar el cifrado"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Ejecutar la prueba de búsqueda de direcciones de Internet"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Actualizar"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Actualizar"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Cambiar la verificación de DNS"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Establecer banda GSM y UMTS"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Cargando lista de banda..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Establecer"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Desconectando…"</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Desconectado"</string>
     <string name="status_failed" msgid="610462050405904601">"Incorrecto"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Sonido y visualización"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Configuración de sonido y visualización"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Configuración de sonido"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Establecer tonos de llamada, notificaciones, brillo de pantalla"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Modo silencioso"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Todos los sonidos excepto los medios y las alarmas están en silencio"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Todos los sonidos excepto los medios están en silencio"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Seleccionar tono de llamada de notificación"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Volumen de los medios"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Establecer volumen para la música y los videos"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Audio de la base"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Configuración de audio para la base adjunta"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Tonos audibles"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Reproducir tonos cuando se utilice el teclado de marcación"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Reproducir el sonido para los avisos de la tarjeta SD"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Cancelación por ruido"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Eliminar ruido de fondo cuando se habla o se graba."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Base"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Configuración de la base"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Audio"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Configuración para la base adjunta del escritorio"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Configuración para la base adjunta del automóvil"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"El teléfono no se encuentra en la base"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Configuración para la base adjunta"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"No se encontró la base "</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"El teléfono debe estar en la base para configurar el audio de la base."</string>
     <string name="sync_settings" msgid="9186125469300013491">"Cuentas y sincronización"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Agregar o eliminar cuentas, y cambiar la configuración de la cuenta"</string>
     <string name="search_settings" msgid="1910951467596035063">"Buscar"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Espacio total"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Desmontar la tarjeta SD"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Desmontar la tarjeta SD para extraerla de manera segura"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Formatear tarjeta SD"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Formato (borrar) la tarjeta SD"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"No disponible"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Administrar aplicaciones, configurar accesos directos para lanzamientos rápidos"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Configuración de aplicación"</string>
     <string name="install_applications" msgid="4872012136210802181">"Fuentes desconocidas"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Admite la instalación de aplicaciones que no pertenezcan a Market"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Tu teléfono y datos personales son más vulnerables a sufrir ataques de aplicaciones provenientes de fuentes desconocidas. Aceptas que eres el único responsable de cualquier daño que sufra tu teléfono o de cualquier pérdida de datos que pueda ocasionar el uso de estas aplicaciones."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Información de aplicación"</string>
     <string name="storage_label" msgid="8700867073480107253">"Espacio de almacenamiento"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"No se han instalado servicios de accesibilidad"</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Este servicio de accesibilidad podrá recopilar todo el texto que escribas, incluido los números de tarjeta de crédito de tus datos personales, excepto las contraseñas. También podrá registrar las interacciones de tu interfaz de usuario. Proviene de la aplicación <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. ¿Deseas utilizar este servicio de accesibilidad?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"¿Deseas desactivar la accesibilidad?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Uso de la batería"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Lo que ha utilizado la batería"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Uso de la batería desde que se desconectó"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Usar siempre mi config."</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Config. predet. debajo de la config. superpuesta de la aplicación"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Configuración predeterminada"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Índice de voz"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Velocidad en la que se habla el texto"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Sonido"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Control de energía"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Actualizando configuración de Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Actualización de la configuración de Bluetooth"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Programa de instalación de la credencial"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"Configuración de VPN"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Conectar a <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Nombre de usuario:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"El almacenamiento de la credencial se ha borrado."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"El almacenamiento de la credencial está activado."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"El almacenamiento de la credencial está inhabilitado."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Tono de emergencia"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Establecer el comportamiento cuando se establece una llamada de emergencia"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Privacidad"</string>
diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml
index 8065cf9..12717de 100644
--- a/res/values-es/arrays.xml
+++ b/res/values-es/arrays.xml
@@ -84,7 +84,7 @@
   </string-array>
   <string-array name="wifi_sleep_policy_entries">
     <item msgid="3804733751095821976">"Cuando la pantalla se apague"</item>
-    <item msgid="1549288661423279207">"Nunca si se está cargando la batería"</item>
+    <item msgid="1549288661423279207">"Nunca si está conectado"</item>
     <item msgid="1986753720941888596">"Nunca"</item>
   </string-array>
   <string-array name="battery_history_type_spinner">
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 105c9f9..b311835 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Desconocido"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Activar señal móvil"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Desactivar señal móvil"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Habilitar registro QXDM de SD"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Inhabilitar registro QXDM de SD"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Ver libreta de direcciones de tarjeta SIM"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Ver números de marcación fija"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Ver números de marcación de servicio"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Obtener lista PDP"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Habilitar conexión de datos"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Inhabilitar conexión de datos"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Habilitar datos al iniciar"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Inhabilitar datos al iniciar"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"En servicio"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Fuera de servicio"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Sólo llamadas de emergencia"</string>
@@ -78,7 +72,7 @@
     <string name="battery_info_status_discharging" msgid="6222697503392774475">"Descargando..."</string>
     <string name="battery_info_status_not_charging" msgid="2820070506621483576">"No se está cargando."</string>
     <string name="battery_info_status_full" msgid="2824614753861462808">"Completa"</string>
-    <string name="battery_info_power_unplugged" msgid="5987246575519551081">"No se está cargando"</string>
+    <string name="battery_info_power_unplugged" msgid="5987246575519551081">"Sin conexión"</string>
     <string name="battery_info_power_ac" msgid="6808516193001604634">"CA"</string>
     <string name="battery_info_power_usb" msgid="8012931702516331797">"USB"</string>
     <string name="battery_info_power_ac_usb" msgid="6777734146838328688">"AC+USB"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Hacer ping a DirIP:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Hacer ping a nombre de host (www.google.com):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"Prueba de cliente HTTP:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Alternar cifrado"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Ejecutar prueba de ping"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Actualizar"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Actualizar"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"alternar comprobación de DNS"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Establecer banda GSM/UMTS"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Cargando lista de bandas..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Establecer"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Desconectando..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Desconectada"</string>
     <string name="status_failed" msgid="610462050405904601">"Con error"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Sonido y pantalla"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Configuración de sonido y de pantalla"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Configuración de sonido"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Establecer tonos, notificaciones, brillo de la pantalla"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Modo silencio"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Silencio de todos los sonidos (excepto los multimedia y las alarmas)"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Todos los sonidos excepto los multimedia están silenciados."</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Seleccionar tono de notificación"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Volumen multimedia"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Establecer volumen para música y vídeos"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Audio del conector"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Configuración de audio del conector adjunto"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Tonos táctiles sonoros"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Reproducir tonos al utilizar teclado de marcado"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Reproducir sonido para notificaciones de la tarjeta SD"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Supresión de ruido"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Suprimir ruido de fondo al hablar o al grabar"</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Conector"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Configuración del conector"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Audio"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Configuración del conector de equipo de sobremesa adjunto"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Configuración del conector del coche adjunto"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Teléfono sin conectar"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Configuración del conector adjunto"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"No se ha encontrado el conector"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"El teléfono debe estar conectado para configurar el audio del conector."</string>
     <string name="sync_settings" msgid="9186125469300013491">"Cuentas y sincronización"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Añadir o eliminar cuentas y modificar la configuración de las cuentas"</string>
     <string name="search_settings" msgid="1910951467596035063">"Búsqueda"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Espacio total"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Desactivar tarjeta SD"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Desactiva la tarjeta SD antes de extraerla para evitar la pérdida de datos."</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Formatear tarjeta SD"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Formatear (borrar) la tarjeta SD"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"No disponible"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Administrar aplicaciones, configurar accesos directos de inicio rápido"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Configuración de aplicaciones"</string>
     <string name="install_applications" msgid="4872012136210802181">"Orígenes desconocidos"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Permitir la instalación de aplicaciones distintas de Market"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"El teléfono y los datos personales son más vulnerables a los ataques de aplicaciones de origen desconocido. El usuario acepta ser el único responsable de cualquier daño en el teléfono o pérdida de datos que se pueda derivar del uso de estas aplicaciones."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Información de la aplicación"</string>
     <string name="storage_label" msgid="8700867073480107253">"Almacenamiento"</string>
@@ -783,7 +774,7 @@
     <string name="battery_history_screen_on" msgid="1377240025275657277">"Tiempo transcurrido con la pantalla encendida:"</string>
     <string name="battery_history_phone_on" msgid="4891504401623839532">"Tiempo transcurrido con el teléfono encendido:"</string>
     <string name="battery_history_screen_on_battery" msgid="536058210445081888">"En la batería:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Cargando:"</string>
+    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Conectado:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Estadísticas de uso"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Estadísticas de uso"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Ordenar por:"</string>
@@ -798,11 +789,15 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"No hay instalado ningún servicio de accesibilidad."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Este servicio de accesibilidad puede recopilar todo lo que escribas, desde datos personales hasta números de tarjetas de crédito, a excepción de las contraseñas. También puede registrar las interacciones con la interfaz de usuario. Procede de la aplicación <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. ¿Quieres utilizar este servicio de accesibilidad?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"¿Quieres inhabilitar la accesibilidad?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Uso de la batería"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Consumo de la batería"</string>
-    <string name="battery_since_unplugged" msgid="338073389740738437">"Uso de la batería desde que se cargó"</string>
+    <string name="battery_since_unplugged" msgid="338073389740738437">"Uso de la batería desde que se desenchufó"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"Uso de la batería desde que se restableció"</string>
-    <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> desde que se cargó"</string>
+    <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> desde que se desenchufó"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Tiempo de actividad del dispositivo"</string>
@@ -850,7 +845,7 @@
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Detener o desinstalar la aplicación"</string>
     <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Desactivar GPS cuando no se esté utilizando"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"La aplicación puede incluir opciones que permitan reducir el uso de la batería."</string>
-    <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> desde que se cargó"</string>
+    <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> desde que se desenchufó"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Desde la última vez que se cargó: <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
     <string name="menu_stats_total" msgid="8973377864854807854">"Total de consumo"</string>
     <string name="menu_stats_refresh" msgid="1676215433344981075">"Actualizar"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Utilizar siempre mi configuración"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"La configuración predeterminada anula la de la aplicación."</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Configuración predeterminada"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Velocidad de voz"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Velocidad a la que se lee el texto"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Tono"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Control de energía"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Actualización de la configuración de la conexión Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Actualización de la configuración de la conexión Bluetooth"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Instalador de credenciales"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"Configuración de red VPN"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Establecer conexión con <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Nombre de usuario:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Se ha borrado el almacenamiento de credenciales."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Almacenamiento de credenciales habilitado"</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Almacenamiento de credenciales inhabilitado"</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Tono de emergencia"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Establecer comportamiento al realizar una llamada de emergencia"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Privacidad"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 8faebdc..98c0290 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Inconnu"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Allumer le signal radio"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Éteindre le signal radio"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Activer le journal SD QXDM"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Désactiver le journal QXMD SD"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Afficher le carnet d\'adresses de la carte SIM"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Afficher les numéros autorisés"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Afficher les numéros de service"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Récupérer la liste PDP"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Activer la connexion des données"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Désactiver la connexion des données"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Activer les données au démarrage"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Désactiver les données lors du démarrage"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"Service en cours"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Hors-service"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Appels d\'urgence uniquement"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Adr. IP ping :"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Nom de l\'hôte du ping (www.google.com) :"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"Test du client HTTP :"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Activer/désactiver le cryptage"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Effectuer un test de ping"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC :"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Mettre à jour"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Actualiser"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Activer le contrôle DNS"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Définir la bande GSM/UMTS"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Chargement de la liste de bandes..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Définir"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Déconnexion…"</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Déconnecté"</string>
     <string name="status_failed" msgid="610462050405904601">"Échec"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Sons et affichage"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Paramètres des sons et affichages"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Paramètres sonores"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Configurer les sonneries, les notifications et la luminosité"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Mode silencieux"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Aucun son sauf pour le multimédia et le réveil"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Toutes les sonneries seront définies sur Silencieux, sauf les fichiers multimédia."</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Sélectionner une sonnerie de notification"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Volume"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Régler le volume pour la musique et les vidéos"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Options audio de la base"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Paramètres audio de la base associée"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Tonalité touches audible"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Activer la tonalité des touches du clavier"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Émettre un son pour les notifications de la carte SD"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Suppression du bruit"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Supprimer les bruits de fond lors d\'une discussion ou d\'un enregistrement."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Base"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Paramètres de la base"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Audio"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Paramètres de la base de bureau associée"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Paramètres de la base de voiture associée"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Le téléphone n\'est pas sur sa base."</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Paramètres de la base associée"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Base introuvable"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"Pour configurer les paramètres audio de la base, vous devez placer le téléphone sur cette dernière."</string>
     <string name="sync_settings" msgid="9186125469300013491">"Comptes et synchro"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Ajouter ou supprimer des comptes et modifier leurs paramètres"</string>
     <string name="search_settings" msgid="1910951467596035063">"Recherche"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Espace total"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Désactiver la carte SD"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Désactiver la carte SD pour la retirer en toute sécurité"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Formater la carte SD"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Formater (effacer) la carte SD"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Non disponible"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Gérer les applications, configurer des raccourcis de lancement rapide"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Paramètres des applications"</string>
     <string name="install_applications" msgid="4872012136210802181">"Sources inconnues"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Autoriser l\'installation d\'applications ne provenant pas d\'Android Market"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Votre téléphone et vos données personnelles sont très vulnérables face à des applications provenant de sources inconnues. Vous acceptez d\'être le seul responsable de tout dommage causé à votre téléphone ou de toute perte de données pouvant découler de l\'utilisation de telles applications."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Informations sur l\'application"</string>
     <string name="storage_label" msgid="8700867073480107253">"Mémoire"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Aucun service d\'accessibilité installé"</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Ce service d\'accessibilité est susceptible de recueillir tout le texte que vous saisissez, y compris les données personnelles et les numéros de cartes de crédit, mais pas les mots de passe. Il est également possible qu\'il enregistre vos interactions avec l\'interface utilisateur. Il provient de l\'application <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Utiliser ce service d\'accessibilité ?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Désactiver les services d\'accessibilité ?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Utilisation de la batterie"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Répartition de l\'utilisation de la batterie"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Utilisation de la batterie depuis le débranchement"</string>
@@ -856,12 +851,16 @@
     <string name="menu_stats_refresh" msgid="1676215433344981075">"Actualiser"</string>
     <string name="process_kernel_label" msgid="3916858646836739323">"Système d\'exploitation Android"</string>
     <string name="process_mediaserver_label" msgid="6500382062945689285">"Serveur multimédia"</string>
-    <string name="tts_settings" msgid="3348626948015962987">"Synthèse vocale"</string>
+    <string name="tts_settings" msgid="3348626948015962987">"SMS vocaux"</string>
     <string name="tts_settings_summary" msgid="2627715231944602766">"Définir les options de synthèse vocale"</string>
     <string name="tts_settings_title" msgid="4182348653053000933">"Paramètres de la synthèse vocale"</string>
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Tjrs utiliser mes param."</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Les param. par défaut ci-dessous remplacent les param. de l\'application"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Paramètres par défaut"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Cadence"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Vitesse à laquelle le texte est énoncé"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Ton"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Contrôle de l\'alimentation"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Mise à jour des paramètres Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Mise à jour des paramètres Bluetooth"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Programme d\'installation des identifiants"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"Paramètres de VPN"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Connexion à \"<xliff:g id="NAME">%s</xliff:g>\""</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Nom d\'utilisateur :"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Le stockage des identifiants est effacé."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Stockage des identifiants activé"</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Stockage des identifiants désactivé"</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Sonnerie d\'urgence"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Définir le comportement en cas d\'appel d\'urgence"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Confidentialité"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index c8e2957..c2a0ee7 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Sconosciuto"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Attiva segnale cellulare"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Disattiva segnale cellulare"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Attiva log SD QXDM"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Disattiva log SD QXDM"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Visualizza rubrica SIM"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Visualizza numeri selezione fissa"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Visualizza numeri dell\'elenco dei numeri di servizio"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Ottieni elenco PDP"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Attiva connessione dati"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Disattiva connessione dati"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Attiva dati all\'avvio"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Disattiva dati all\'avvio"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"In servizio"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Fuori servizio"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Solo chiamate di emergenza"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Indir. IP ping:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Nome host ping (www.google.com):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"Test client HTTP:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Attiva/disattiva cifratura"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Esegui test ping"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Aggiorna"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Aggiorna"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Attiva o disattiva verifica DNS"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Imposta banda GSM/UMTS"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Caricamento lista bande..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Imposta"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Disconnessione..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Disconnesso"</string>
     <string name="status_failed" msgid="610462050405904601">"Non riuscita"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Audio e display"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Impostazioni audio e display"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Impostazioni audio"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Imposta suonerie, notifiche e luminosità dello schermo"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Modalità silenziosa"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Tutti i suoni eccetto quelli multimediali verranno disattivati"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Tutti i suoni eccetto quelli multimediali verranno disattivati"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Seleziona suoneria notifica"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Volume app. multimediali"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Imposta il volume di musica e video"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Audio dock"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Impostazioni audio per dock collegato"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Toni udibili al tocco"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Riproduci toni durante la composizione"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Riproduci suono per notifiche scheda SD"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Eliminazione rumori"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Elimina il rumore di fondo quando parli o registri."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Dock"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Impostazioni dock"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Audio"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Impostazioni per desktop dock collegato"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Impostazioni per dock automobile collegato"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Telefono non inserito nel dock"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Impostazioni per dock collegato"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Dock non trovato"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"Il telefono deve essere inserito nel dock per configurare l\'audio del dock"</string>
     <string name="sync_settings" msgid="9186125469300013491">"Account e sincronizzaz."</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Aggiungi o rimuovi account e modifica impostazioni account"</string>
     <string name="search_settings" msgid="1910951467596035063">"Ricerca"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Spazio totale"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Smonta scheda SD"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Smonta la scheda SD per una rimozione sicura"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Formatta scheda SD"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Formatta (cancella) la scheda SD"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Non disponibile"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Gestisci le applicazioni, imposta le scorciatoie di avvio rapido"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Impostazioni applicazione"</string>
     <string name="install_applications" msgid="4872012136210802181">"Origini sconosciute"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Consenti l\'installazione di applicazioni non presenti in Market"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Il telefono e i dati personali sono più vulnerabili agli attacchi da parte di applicazioni\n di origini sconosciute. L\'utente accetta di essere il solo responsabile degli eventuali\n danni al telefono o della perdita dei dati che potrebbero derivare dall\'utilizzo di\n queste applicazioni."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Info applicazione"</string>
     <string name="storage_label" msgid="8700867073480107253">"Archiviazione"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Nessun servizio di accesso facilitato installato."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Questo servizio di accesso facilitato potrebbe riuscire a raccogliere tutto il testo digitato, compresi i numeri di carte di credito ma eccetto le password. Potrebbe anche registrare le tue interazioni con l\'interfaccia utente. Deriva dall\'applicazione <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Utilizzare questo servizio di accesso facilitato?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Disattivare accesso facilitato?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Utilizzo batteria"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Consumo batteria"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Utilizzo batteria dallo scollegamento"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Usa sempre mie imp."</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Le impostazioni predefinite hanno priorità sul quelle delle applicazioni"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Impostazioni predefinite"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Velocità voce"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Velocità di pronuncia del testo"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Tono"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Controllo risparmio energia"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Aggiornamento impostazione Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Aggiornamento impostazione Bluetooth"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Programma di installazione credenziali"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"Impostazioni VPN"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Connessione a <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Nome utente:"</string>
@@ -967,7 +965,7 @@
     <string name="credentials_set_password" msgid="9104473585811899989">"Imposta password"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Imposta o modifica la password dell\'archivio di credenziali"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Cancella archivio"</string>
-    <string name="credentials_reset_summary" msgid="1530388094693731636">"Cancella tutti i contenuti dall\'archivio di credenziali e reimposta la relativa password"</string>
+    <string name="credentials_reset_summary" msgid="1530388094693731636">"Cancella tutti I contenuti dall\'archivio di credenziali e reimposta la relativa password"</string>
     <string name="credentials_reset_hint" msgid="819990295796804516">"Eliminare tutte le credenziali e reimpostare la password dell\'archivio di credenziali?"</string>
     <string name="credentials_old_password" msgid="7553393815538684028">"Password attuale:"</string>
     <string name="credentials_new_password" msgid="267487774686796938">"Nuova password:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"L\'archivio di credenziali è cancellato."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"L\'archivio di credenziali è attivo."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"L\'archivio di credenziali non è attivo."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Tono chiamate di emergenza"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Imposta il comportamento in caso di chiamata di emergenza"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Privacy"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 7ba69a2..ae51b32 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"不明"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"無線通信をオン"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"無線通信をオフ"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"QXDM SDログを有効にする"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"QXDM SDログを無効にする"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"SIMのアドレス帳を表示"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"発信番号制限を表示"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"サービス電話番号を表示"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"PDPリストを取得"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"データ接続を有効にする"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"データ接続を無効にする"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"起動時にデータを有効にする"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"起動時にデータを無効にする"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"使用中"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"休止中または使用不可"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"緊急通報のみ"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"IPアドレスのPing:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"ホスト名 (www.google.co.jp) のPing:"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"HTTPクライアントテスト:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"暗号化の切り替え"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"pingテストの実行"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"更新"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"更新"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"DNSチェックを切り替え"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"GSM/UMTSバンドの設定"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"バンドリストを読み込み中..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"設定"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"切断中..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"切断"</string>
     <string name="status_failed" msgid="610462050405904601">"失敗"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"サウンド &amp; 画面設定"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"音と表示の設定"</string>
     <string name="sound_settings" msgid="5007659014828162881">"音の設定"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"着信音、操作音、画面の明るさなど"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"マナーモード"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"音楽、動画メディア、アラーム以外は消音"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"音楽と動画メディア以外は消音"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"通知音を選択"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"メディア再生音量"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"音楽や動画の再生音量"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"ドックオーディオ"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"付属のドックの音声設定"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"タッチ操作音"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"ダイヤルパッドの操作音をONにする"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"SDカード通知時に音を鳴らす"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"ノイズキャンセル"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"通話中や録音中に周囲のノイズを抑えます。"</string>
-    <string name="dock_settings" msgid="1820107306693002541">"ドック"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"ドックの設定"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"音声"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"付属のデスクトップホルダーの設定"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"付属のカーホルダーの設定"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"電話が固定されていません"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"付属のドックの設定"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"ドックが見つかりません"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"ドックの音声を設定するには携帯電話をドックに固定する必要があります"</string>
     <string name="sync_settings" msgid="9186125469300013491">"アカウントと同期"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"アカウントの追加や削除、アカウント設定の変更を行います"</string>
     <string name="search_settings" msgid="1910951467596035063">"検索"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"合計容量"</string>
     <string name="sd_eject" msgid="6915293408836853020">"SDカードのマウント解除"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"SDカードを安全に取り外すためマウントを解除する"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"SDカードをフォーマット"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"SDカードをフォーマット(消去)する"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"使用不可"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"アプリケーションの管理やクイック起動ショートカットの設定"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"アプリケーション設定"</string>
     <string name="install_applications" msgid="4872012136210802181">"提供元不明のアプリ"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"サードパーティアプリケーションのインストールを許可する"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"提供元不明のアプリケーションから携帯電話や個人情報データが攻撃を受ける可能性が高くなります。このようなアプリケーションの使用により生じうる携帯電話への損害やデータの損失について、お客様がすべての責任を負うことに同意するものとします。"</string>
     <string name="application_info_label" msgid="1150486628158409543">"アプリケーション情報"</string>
     <string name="storage_label" msgid="8700867073480107253">"メモリ"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"ユーザー補助サービスがインストールされていません。"</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"このユーザー補助サービスを選択すると、入力する全テキストの収集をアプリケーション(<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>)に許可することになります。これにはクレジットカード番号などの個人情報(パスワードを除く)も含まれます。また、ユーザーインターフェースでのやり取りも記録されます。このユーザー補助サービスを使用しますか?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"ユーザー補助サービスを無効にしますか?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"電池使用量"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"電池を使用している操作"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"電池使用時間"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"常に自分の設定を使用する"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"アプリケーション設定を下のデフォルト設定で上書きする"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"デフォルト設定"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"音声の速度"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"テキストの読み上げ速度"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"音の高さ"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"電源管理"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Wi-Fi設定の更新"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Bluetooth設定の更新"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"認証情報インストーラ"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN設定"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"<xliff:g id="NAME">%s</xliff:g>に接続"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"ユーザー名:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"認証情報ストレージが消去されました。"</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"認証情報ストレージが有効になりました。"</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"認証情報ストレージが無効になりました。"</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"緊急時の音"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"緊急通報時の動作を設定します"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"プライバシー"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 1fd6ce0..fc7e11e 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"알 수 없음"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"무선 켜기"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"무선 끄기"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"QXDM SD 로그 사용"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"QXDM SD 로그 사용 안함"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"SIM 주소록 보기"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"발신 허용 번호 보기"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"SDN(Service Dialing Numbers) 보기"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"PDP 목록 가져오기"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"데이터 연결 사용"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"데이터 연결 사용 안함"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"부팅할 때 데이터 사용"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"부팅할 때 데이터 사용 중지"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"서비스 상태"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"서비스 지역 벗어남"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"비상 전화만"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"IP 주소 Ping:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"호스트이름(www.google.com) Ping:"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"HTTP 클라이언트 테스트:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"암호화 선택"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Ping 테스트 실행"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"업데이트"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"새로고침"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"DNS 확인 선택"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"GSM/UMTS 대역 설정"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"대역 목록 로드 중..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"설정"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"연결을 끊는 중..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"연결 끊김"</string>
     <string name="status_failed" msgid="610462050405904601">"실패"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"소리 및 디스플레이"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"소리 및 디스플레이 설정"</string>
     <string name="sound_settings" msgid="5007659014828162881">"소리 설정"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"벨소리, 알림, 화면 밝기 설정"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"무음 모드"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"미디어 및 알람을 제외하고 모두 무음 모드로 전환"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"미디어를 제외하고 모두 무음 모드로 전환됩니다."</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"알림 벨소리 선택"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"미디어 볼륨"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"음악 및 동영상에 대한 볼륨 설정"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"독 오디오"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"연결된 독에 대한 오디오 설정"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"터치음 듣기"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"다이얼패드를 사용할 때 신호음 재생"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"SD 카드 알림 시 사운드 재생"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"소음 제거"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"말하거나 녹음할 때 배경 소음을 억제합니다."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"도킹"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"도킹 설정"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"오디오"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"연결된 데스크톱 도크 설정"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"연결된 카폰 도크 설정"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"도킹되지 않은 휴대전화"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"연결된 도크 설정"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"도크를 찾을 수 없음"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"휴대전화를 도킹해야 오디오 도크를 구성할 수 있습니다."</string>
     <string name="sync_settings" msgid="9186125469300013491">"계정 및 동기화"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"계정 추가 또는 삭제 및 계정 설정 변경"</string>
     <string name="search_settings" msgid="1910951467596035063">"검색"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"총 공간"</string>
     <string name="sd_eject" msgid="6915293408836853020">"SD 카드 마운트 해제"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"안전 제거를 위해 SD 카드 마운트 해제"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"SD 카드 포맷"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"SD 카드 포맷(지우기)"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"사용할 수 없음"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"응용프로그램 관리, 빠른실행 바로가기 설정"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"응용프로그램 설정"</string>
     <string name="install_applications" msgid="4872012136210802181">"알 수 없는 소스"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"시판되지 않은 응용프로그램 설치 허용"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"휴대전화 및 개인 정보는 출처를 알 수 없는 응용프로그램의 공격에 더욱 취약합니다. 사용자는 이러한 응용프로그램을 사용하여 발생할 수 있는 휴대전화 손상이나 데이터 손실에 대해 사용자가 단독으로 책임이 있음을 동의합니다."</string>
     <string name="application_info_label" msgid="1150486628158409543">"응용프로그램 정보"</string>
     <string name="storage_label" msgid="8700867073480107253">"저장공간"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"설치한 접근성 서비스가 없습니다."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"접근성 서비스는 비밀번호를 제외한 개인 데이터 신용카드 번호 등과 같이 사용자가 입력한 모든 텍스트를 수집할 수 있습니다. 또한 사용자 인터페이스 상호 작용을 기록할 수도 있습니다. 이 서비스는 <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> 응용프로그램에서 제공합니다. 접근성 서비스를 사용하시겠습니까?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"접근성 서비스를 사용 중지하시겠습니까?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"배터리 사용"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"배터리를 사용한 항목"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"플러그를 뽑은 이후 배터리 전원 사용"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"항상 내 설정 사용"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"아래 기본 설정으로 응용프로그램 설정 덮어쓰기"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"기본 설정"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"말하는 속도"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"텍스트를 발음하는 속도"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"피치"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"전원 컨트롤"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Wi-Fi 설정 업데이트"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"블루투스 설정 업데이트"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"자격증명 설치 프로그램"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN 설정"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"<xliff:g id="NAME">%s</xliff:g>에 연결"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"사용자 이름:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"자격증명 저장소가 삭제되었습니다."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"자격증명 저장소를 사용합니다."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"자격증명 저장소를 사용 중지했습니다."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"긴급 신호음"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"긴급 통화 중 동작 설정"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"개인정보 보호"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index ab9f5b4..55b7d19 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Ukjent"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Slå på radio"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Slå av radio"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Slå på QXDM-minnekortlogg"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Slå av QXDM-minnekortlogg"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Se SIM-adressebok"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Vis faste nummer"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Vis tjenestenummer"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Hent PDP-liste"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Slå på datatilkobling"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Slå av datatilkobling"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Slå på data ved oppstart"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Slå av data ved oppstart"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"I serviceperiode"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Ute av serviceperiode"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Kun nødsamtaler"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Ping IP-adresse:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Ping vertsnavn(www.google.com):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"HTTP-klienttest:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Sål av/på kryptering"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Kjør ping-test"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Oppdater"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Last på nytt"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Slå av/på DNS-sjekk"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Velg GSM/UMTS-bånd"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Henter båndliste…"</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Velg"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Kobler fra…"</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Frakoblet"</string>
     <string name="status_failed" msgid="610462050405904601">"Mislykket"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Lyd og skjerm"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Lyd og bilde"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Lydinnstillinger"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Ringetoner, varsling, lysstyrke"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Stillemodus"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Slå av alle lyder unntatt media og alarmer"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Alle lyder unntatt media og alarmer er slått av"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Velg ringetone for varsling"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Medievolum"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Volum for musikk og video"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Forankre lyd"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Lydinnstillinger for festet forankring"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Hørbare tastetoner"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Spill toner når talltastaturet benyttes"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Spill lyd for minnekortvarsler"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Støyreduksjon"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Demp bakgrunnsstøy når du snakker eller tar opp."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Forankringstasjon"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Innstillinger for forankringsstasjon"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Lyd"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Innstillinger for festet skrivebordsforankring"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Innstillinger for festet bilforankring"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Telefonen er ikke plassert i forankringsstasjonen"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Innstillinger for festet forankring"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Finner ikke forankringsstasjon"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"Telefonen må være plassert i forankringsstasjonen for å konfigurere forankringslyden"</string>
     <string name="sync_settings" msgid="9186125469300013491">"Kontoer/synkronisering"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Legge til eller fjerne kontoer og endre kontoinnstillinger"</string>
     <string name="search_settings" msgid="1910951467596035063">"Søk"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Total plass"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Avmonter/løs ut minnekort"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Løs ut minnekortet for trygg fjerning"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Formater minnekort"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Formater (fjern alt fra) minnekortet"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Ikke tilgjengelig"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Installerte applikasjoner, hurtigtaster"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Innstillinger for applikasjoner"</string>
     <string name="install_applications" msgid="4872012136210802181">"Ukjente kilder"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Tillat installasjon av applikasjoner som ikke kommer fra markedet"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Telefonen og dine personlige data er mer sårbare mot angrep fra applikasjoner som kommer fra ukjente kilder. Du godtar at du selv er ansvarlig for enhver skade på telefonen eller tap av data som måtte oppstå fra bruk av slike applikasjoner."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Applikasjonsinformasjon"</string>
     <string name="storage_label" msgid="8700867073480107253">"Lagring"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Ingen tilgjengelighetstjenester er installert."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>Denne tilgjengelighetstjenesten har tilgang til all tekst du skriver, inkludert personlig data som passord og kredittkortnummer. Den kan også loggføre alt som skjer i brukergrensesnittet. Det kommer fra programmet. Aktivere tilgjengelighetstjenesten?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Slå av tilgjengelighetsstøtten?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Batteribruk"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Hva som har brukt batteri"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Batteribruk siden strømmen ble trukket ut"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Overstyr innstillinger"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Standardvalgene under overstyrer applikasjonsinnstillinger"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Standardvalg"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Talehastighet"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Hvor raskt teksten leses"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Stemmeleie"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Strømkontroll"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Oppdaterer innstilling for Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Oppdatere Bluetooth-innstilling"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Akkreditivinstallasjon"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN-innstillinger"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Koble til <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Brukernavn:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Akkreditivlageret ble tømt."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Akkreditivlageret er aktivert."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Akkreditivlageret er deaktivert."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Nødtone"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Velg oppførsel når en nødsamtale opprettes"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Personvern"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 04bd5d0..edf3d7e 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Onbekend"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Radio inschakelen"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Radio uitschakelen"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"QXDM SD-logboek inschakelen"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"QXDM SD-logboek uitschakelen"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"SIM-adresboek weergeven"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Vaste nummers weergeven"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Servicenummers weergeven"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"PDP-lijst ophalen"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Gegevensverbinding inschakelen"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Gegevensverbinding uitschakelen"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Gegevens inschakelen bij opstarten"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Gegevens uitschakelen bij opstarten"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"In gebruik"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Niet in gebruik"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Alleen noodoproepen"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"IP-adres pingen:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Hostnaam pingen (www.google.com):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"HTTP-client testen:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Codering in-/uitschakelen"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Pingtest uitvoeren"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Bijwerken"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Vernieuwen"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"DNS-controle in-/uitschakelen"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"GSM/UMTS-band instellen"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Bandlijst laden..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Instellen"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Verbinding verbreken..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Verbinding verbroken"</string>
     <string name="status_failed" msgid="610462050405904601">"Mislukt"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Geluid en weergave"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Geluid- en weergaveinstellingen"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Geluidsinstellingen"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Beltonen, meldingen, schermhelderheid instellen"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Stille modus"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Alle geluiden worden uitgeschakeld, behalve media- en alarmtonen"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Alle geluiden, behalve media, worden uitgeschakeld"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Beltoon voor meldingen selecteren"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Mediavolume"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Volume voor muziek en video\'s instellen"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Audio van dockstation"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Audio-instellingen voor het gekoppelde dockstation"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Aanraaktonen"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Tonen afspelen bij gebruik van toetsenblok"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Geluid afspelen voor SD-kaartmeldingen"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Geluidsdemping"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Demp achtergrondgeluid tijdens spraakinvoer of opname."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Docken"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Instellingen voor dockstation"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Audio"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Instellingen voor het gekoppelde bureaudockstation"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Instellingen voor het gekoppelde autodockstation"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Telefoon niet gedockt"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Instellingen voor het gekoppelde dockstation"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Dockstation niet gevonden"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"De telefoon moet zijn gedockt om audio-instellingen voor het dockstation in te stellen"</string>
     <string name="sync_settings" msgid="9186125469300013491">"Accounts en synchronisatie"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Accounts toevoegen of verwijderen en accountinstellingen wijzigen"</string>
     <string name="search_settings" msgid="1910951467596035063">"Zoeken"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Totale ruimte"</string>
     <string name="sd_eject" msgid="6915293408836853020">"SD-kaart ontkoppelen"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"De SD-kaart ontkoppelen zodat u deze veilig kunt verwijderen"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"SD-kaart formatteren"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"De SD-kaart formatteren (wissen)"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Niet beschikbaar"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Toepassingen beheren, sneltoetsen voor snelstarten instellen"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Toepassingsinstellingen"</string>
     <string name="install_applications" msgid="4872012136210802181">"Onbekende bronnen"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Installatie van andere toepassingen dan Market-toepassingen toestaan"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Uw telefoon en persoonlijke gegevens zijn gevoeliger voor aanvallen door toepassingen van onbekende bronnen. U gaat ermee akkoord dat u alleen verantwoordelijk bent voor enige schade aan uw telefoon of verlies van gegevens die voortkomen uit het gebruik van deze toepassingen."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Toepassingsinfo"</string>
     <string name="storage_label" msgid="8700867073480107253">"Opslagruimte"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Geen geïnstalleerde toegankelijkheidsservices."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Deze toegankelijkheidsservice verzamelt mogelijk alle tekst die u typt, inclusief persoonlijke gegevens en creditcardnummers, maar geen wachtwoorden. De service kan ook uw interacties met de gebruikersinterface vastleggen. De service is afkomstig uit de toepassing <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Deze toegankelijkheidsservice inschakelen?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Toegankelijkheid uitschakelen?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Accugebruik"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Waarvoor de accu is gebruikt"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Accugebruik sinds losgekoppeld"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Altijd mijn instellingen gebruiken"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Onderstaande standaardinstellingen overschrijven toepassingsinstellingen"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Standaardinstellingen"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Spraaksnelheid"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Snelheid waarmee de tekst wordt gesproken"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Hoogte"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Energiebeheer"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Wi-Fi-instelling bijwerken"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Bluetooth-instelling bijwerken"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Installatieprogramma voor referenties"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN-instellingen"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Verbinding maken met <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Gebruikersnaam:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"De opslag van referenties is gewist."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"De opslag van referenties is ingeschakeld."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"De opslag van referenties is uitgeschakeld."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Toon voor noodoproep"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Gedrag bij noodoproepen instellen"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Privacy"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 4c51870..05b9595 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Nieznany"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Włącz radio"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Wyłącz radio"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Włącz dziennik QXDM dla karty SD"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Wyłącz dziennik QXDM dla karty SD"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Wyświetl książkę adresową na karcie SIM"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Wyświetl ustalone numery"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Wyświetl numery usług"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Pobierz listę PDP"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Włącz połączenie danych"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Wyłącz połączenie danych"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Włącz dane podczas uruchamianiu"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Wyłącz dane przy uruchamianiu"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"Działa"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Nie działa"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Tylko połączenia alarmowe"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Wyślij polecenie ping adresu IP:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Nazwa hosta dla operacji ping (www.google.pl):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"Test klienta HTTP:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Przełącz szyfrowanie"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Przeprowadź test ping"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Aktualizuj"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Odśwież"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Przełącz sprawdzanie DNS"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Ustaw pasmo GSM/UMTS"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Ładowanie listy pasm..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Ustaw"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Rozłączanie..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Rozłączona"</string>
     <string name="status_failed" msgid="610462050405904601">"Niepowodzenie"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Dźwięk i wyświetlacz"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Ustawienia dźwięku i wyświetlania"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Ustawienia dźwięku"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Ustaw dzwonki, powiadomienia, jasność ekranu"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Tryb cichy"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Wszystkie dźwięki oprócz multimediów i alarmów są wyciszone"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Wszystkie dźwięki za wyjątkiem multimediów są wyciszone"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Wybierz dzwonek powiadomienia"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Głośność multimediów"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Ustaw głośność muzyki oraz filmów wideo"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Dźwięk z podstawki"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Ustawienia dźwięku dla podłączonej podstawki"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Wybieranie numeru"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Odtwarzaj dźwięki podczas używania panelu wybierania numeru"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Odtwarzaj dźwięk dla powiadomień o karcie SD"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Eliminowanie szumu"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Redukcja szumów w tle podczas mówienia lub nagrywania"</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Podstawka"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Ustawienia podstawki"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Dźwięk"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Ustawienia dla podstawki na biurku"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Ustawienia dla podstawki w samochodzie"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Telefon niezadokowany"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Ustawienia dla podłączonej podstawki"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Nie znaleziono podstawki"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"Telefon musi być na podstawce, aby można było konfigurować dźwięk"</string>
     <string name="sync_settings" msgid="9186125469300013491">"Konta i synchronizacja"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Dodaj lub usuń konta i zmień ich ustawienia"</string>
     <string name="search_settings" msgid="1910951467596035063">"Wyszukiwanie"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Całkowita pojemność"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Odłącz kartę SD"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Odłącz kartę SD, aby bezpiecznie ją usunąć"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Formatuj kartę SD"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Formatuj (wymaż) kartę SD"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Niedostępna"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Zarządzaj aplikacjami, skonfiguruj skróty szybkiego uruchamiania"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Ustawienia aplikacji"</string>
     <string name="install_applications" msgid="4872012136210802181">"Nieznane źródła"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Pozwól na instalowanie aplikacji spoza Android Market"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Telefon i dane osobiste są bardziej narażone na atak za pomocą aplikacji z nieznanych źródeł. Zgadzasz się ponieść pełną odpowiedzialność za wszelkie uszkodzenia telefonu oraz utratę danych, które mogą wyniknąć ze stosowania tych aplikacji."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Informacje o aplikacji"</string>
     <string name="storage_label" msgid="8700867073480107253">"Pamięć"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Brak zainstalowanych usług ułatwień dostępu."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Ta usługa ułatwień dostępu może gromadzić cały wpisywany tekst, w tym dane osobiste w postaci numerów kart kredytowych, ale z wyłączeniem haseł. Może również zapisywać w dzienniku działania w interfejsie użytkownika. Usługa pochodzi z aplikacji <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Czy skorzystać z tej usługi ułatwień dostępu?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Czy wyłączyć ułatwienia dostępu?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Użycie baterii"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Gdzie wykorzystywana jest bateria"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Użycie baterii od odłączenia"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Zawsze używaj moich ustawień"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Poniższe ustawienia domyślne zastępują ustawienia aplikacji"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Ustawienia domyślne"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Szybkość mowy"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Szybkość czytania tekstu"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Tony"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Zarządzanie energią"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Aktualizowanie ustawień Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Aktualizowanie ustawień Bluetooth"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Program instalacyjny danych logowania"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"Ustawienia sieci VPN"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Połącz z siecią <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Nazwa użytkownika:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Magazyn danych uwierzytelniania został wyczyszczony."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Magazyn danych logowania jest włączony."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Magazyn danych logowania jest wyłączony."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Sygnał alarmowy"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Skonfiguruj sposób działania w przypadku połączenia alarmowego"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Prywatność"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index fa6e6e9..c2e2660 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Desconhecido"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Ligar rádio"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Desligar rádio"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Activar registo QXDM do SD"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Desactivar registo QXDM do SD"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Ver livro de endereços do SIM"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Ver números de marcação fixos"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Ver números de marcação de serviços"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Obter lista de PDP"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Activar ligação de dados"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Desactivar ligação de dados"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Activar dados no arranque"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Desactivar dados no arranque"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"Em serviço"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Fora de serviço"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Apenas chamadas de emergência"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Ping EnderIp:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Efectuar ping de nome de anfitrião (www.google.com):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"Teste de cliente HTTP:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Comutar encriptação"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Executar teste de ping"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Actualizar"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Actualizar"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Comutar verificação de DNS"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Definir banda GSM/UMTS"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"A carregar lista de bandas..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Definir"</string>
@@ -285,11 +280,16 @@
     <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utilizar para áudio de multimédia"</string>
     <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utilizar para áudio do telefone"</string>
     <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Utilizar para transferência de ficheiros"</string>
-    <string name="bluetooth_dock_settings" msgid="3218335822716052885">"Definições da Estação de ancoragem"</string>
-    <string name="bluetooth_dock_settings_title" msgid="5543069893044375188">"Utilizar estação de ancoragem para áudio"</string>
-    <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Como telefone com altifalante"</string>
-    <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Para música e multimédia"</string>
-    <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Memorizar definições"</string>
+    <!-- no translation found for bluetooth_dock_settings (3218335822716052885) -->
+    <skip />
+    <!-- no translation found for bluetooth_dock_settings_title (5543069893044375188) -->
+    <skip />
+    <!-- no translation found for bluetooth_dock_settings_headset (1001821426078644650) -->
+    <skip />
+    <!-- no translation found for bluetooth_dock_settings_a2dp (8791004998846630574) -->
+    <skip />
+    <!-- no translation found for bluetooth_dock_settings_remember (5551459057010609115) -->
+    <skip />
     <string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Activar Wi-Fi"</string>
@@ -387,10 +387,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"A desligar..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Desligado"</string>
     <string name="status_failed" msgid="610462050405904601">"Sem sucesso"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Som e visualização"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Definições de som e visualização"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Definições de som"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Definir toques, notificações, brilho do ecrã"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Modo silencioso"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Todos os sons são silenciados, excepto multimédia e alarmes"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Todos os sons estão silenciados, excepto multimédia"</string>
@@ -402,15 +399,20 @@
     <string name="vibrate_summary" msgid="5224303668448643275">"Vibrar telefone para chamadas recebidas"</string>
     <string name="notification_sound_title" msgid="6316316069880531693">"Toque de notificação"</string>
     <string name="notification_sound_summary" msgid="7628081155578496618">"Definir toque de notificações predefinido"</string>
-    <string name="notification_pulse_title" msgid="1247988024534030629">"Sinalizar luz de notificação"</string>
-    <string name="notification_pulse_summary" msgid="6899220780534617152">"Sinalizar repetidamente luz da trackball para novas notificações"</string>
+    <!-- no translation found for notification_pulse_title (1247988024534030629) -->
+    <skip />
+    <!-- no translation found for notification_pulse_summary (6899220780534617152) -->
+    <skip />
     <string name="incoming_call_volume_title" msgid="6144314834963494752">"Volume de chamadas recebidas"</string>
     <string name="notification_volume_title" msgid="3363351773121138717">"Volume de notificações"</string>
     <string name="checkbox_notification_same_as_incoming_call" msgid="1073644356290338921">"Utilizar volume de chamadas recebidas para notificações"</string>
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Seleccionar toque de notificações"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Volume de multimédia"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Definir volume para música e vídeos"</string>
-    <string name="dock_settings_summary" msgid="455802113668982481">"Definições de áudio para a estação de ancoragem acoplada"</string>
+    <!-- no translation found for dock_settings_title (5121296855098055941) -->
+    <skip />
+    <!-- no translation found for dock_settings_summary (455802113668982481) -->
+    <skip />
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Tons de toque audíveis"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Reproduzir tons ao utilizar teclado de marcação"</string>
     <string name="dtmf_tone_enable_summary_off" msgid="7791065951268525678">"Reproduzir tons ao utilizar teclado de marcação"</string>
@@ -425,15 +427,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Reproduzir som para notificações do cartão SD"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Cancelamento de ruídos"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Suprime ruídos de fundo ao falar ou gravar."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Estação de ancoragem"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Definições da estação de ancoragem"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Áudio"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Definições da estação de ancoragem para ambiente de trabalho acoplada"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Definições da estação de ancoragem para automóvel acoplada"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Telefone não ancorado"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Definições da estação de ancoragem acoplada"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Estação de ancoragem não encontrada"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"O telefone tem de estar ancorado para configurar o áudio da estação de ancoragem"</string>
     <string name="sync_settings" msgid="9186125469300013491">"Contas e sincronização"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Adicionar ou remover contas e alterar definições de contas"</string>
     <string name="search_settings" msgid="1910951467596035063">"Pesquisar"</string>
@@ -507,6 +500,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Espaço total"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Desmontar cartão SD"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Desmontar o cartão SD para remoção segura"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Formatar cartão SD"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Formatar (apagar) o cartão SD"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Indisponível"</string>
@@ -635,7 +634,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Gerir aplicações, configurar atalhos de iniciação rápida"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Definições da aplicação"</string>
     <string name="install_applications" msgid="4872012136210802181">"Fontes desconhecidas"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Permitir instalação de aplicações não Market"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"O seu telefone e dados pessoais estão mais vulneráveis a ataques por aplicações de fontes desconhecidas. O utilizador reconhece ser o único responsável por danos no telefone ou perda de dados que possam resultar da utilização destas aplicações."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Informações da aplicação"</string>
     <string name="storage_label" msgid="8700867073480107253">"Armazenamento"</string>
@@ -798,6 +798,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Nenhum serviço de acessibilidade instalado."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Este serviço de acessibilidade pode captar todo o texto que escrever, incluindo dados pessoais e números de cartões de crédito, com excepção de palavras-passe. Também pode registar as interacções com a interface do utilizador. O serviço é fornecido com a aplicação <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Utilizar este serviço de acessibilidade?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Desactivar acessibilidade?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Utilização da bateria"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"O que tem estado a utilizar a bateria"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Bateria utilizada desde que foi desligado"</string>
@@ -862,6 +866,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Utilizar sempre as minhas definições"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"As predefinições abaixo substituem as definições da aplicação"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Predefinições"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Taxa de voz"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Velocidade a que o texto é falado"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Tonalidade"</string>
@@ -878,7 +886,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Controlo de Energia"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Actualizar definição de Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Actualizar a definição do Bluetooth"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Instalador de credenciais"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"Definições da VPN"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Ligar a <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Nome de utilizador:"</string>
@@ -983,6 +990,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"O armazenamento de credenciais foi apagado."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"O armazenamento de credenciais está activado."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"O armazenamento de credenciais está desactivado."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Tom de emergência"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Definir o comportamento quando é efectuada uma chamada de emergência"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Privacidade"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 236d398..9c548b0 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Desconhecido"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Ativar o rádio"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Desativar o rádio"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Ativar registro do SD QXDM"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Desativar registro do SD QXDM"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Visualizar o catálogo de endereços do SIM"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Visualizar números de chamada fixa"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Visualizar números de chamada de serviço"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Obter a lista PDP"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Ativar conexão de dados"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Desativar conexão de dados"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Ativar dados na inicialização"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Desativar dados na inicialização"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"Em serviço"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Fora de serviço"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Apenas chamadas de emergência"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Aplicar ping em IpAddr:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Aplicar ping no nome do host (www.google.com):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"Teste do Cliente HTTP:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Ativar/desativar criptografia"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Executar teste de ping"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Atualizar"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Atualizar"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Ativar/desativar verificação de DNS"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Definir frequência GSM/UMTS"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Carregando a lista de frequências…"</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Definir"</string>
@@ -285,11 +280,16 @@
     <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Usar para áudio de mídia"</string>
     <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Usar para áudio do telefone"</string>
     <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Usado para transferência de arquivo"</string>
-    <string name="bluetooth_dock_settings" msgid="3218335822716052885">"Configurações de dock"</string>
-    <string name="bluetooth_dock_settings_title" msgid="5543069893044375188">"Usar dock para áudio"</string>
-    <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Como viva-voz"</string>
-    <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Para música e mídia"</string>
-    <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Lembrar configurações"</string>
+    <!-- no translation found for bluetooth_dock_settings (3218335822716052885) -->
+    <skip />
+    <!-- no translation found for bluetooth_dock_settings_title (5543069893044375188) -->
+    <skip />
+    <!-- no translation found for bluetooth_dock_settings_headset (1001821426078644650) -->
+    <skip />
+    <!-- no translation found for bluetooth_dock_settings_a2dp (8791004998846630574) -->
+    <skip />
+    <!-- no translation found for bluetooth_dock_settings_remember (5551459057010609115) -->
+    <skip />
     <string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Ativar Wi-Fi"</string>
@@ -387,10 +387,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Desconectando…"</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Desconectado"</string>
     <string name="status_failed" msgid="610462050405904601">"Falha"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Som e tela"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Configurações de som e tela"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Configurações de som"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Definir toques, notificações, brilho da tela"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Modo silencioso"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Todos os sons, exceto de mídia e alarmes, são silenciados."</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Todos os sons, exceto de mídia, estão silenciados"</string>
@@ -402,15 +399,20 @@
     <string name="vibrate_summary" msgid="5224303668448643275">"Vibrar o telefone para chamadas recebidas"</string>
     <string name="notification_sound_title" msgid="6316316069880531693">"Toque de notificação"</string>
     <string name="notification_sound_summary" msgid="7628081155578496618">"Definir o seu toque de notificação padrão"</string>
-    <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsar luz de notificação"</string>
-    <string name="notification_pulse_summary" msgid="6899220780534617152">"Pulsar luz do trackball repetidamente para novas notificações"</string>
+    <!-- no translation found for notification_pulse_title (1247988024534030629) -->
+    <skip />
+    <!-- no translation found for notification_pulse_summary (6899220780534617152) -->
+    <skip />
     <string name="incoming_call_volume_title" msgid="6144314834963494752">"Volume da chamada recebida"</string>
     <string name="notification_volume_title" msgid="3363351773121138717">"Volume da notificação"</string>
     <string name="checkbox_notification_same_as_incoming_call" msgid="1073644356290338921">"Usar volume de chamada recebida para notificações"</string>
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Selecionar toque de notificação"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Volume da mídia"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Definir o volume para música e vídeos"</string>
-    <string name="dock_settings_summary" msgid="455802113668982481">"Configurações de áudio para dock anexo"</string>
+    <!-- no translation found for dock_settings_title (5121296855098055941) -->
+    <skip />
+    <!-- no translation found for dock_settings_summary (455802113668982481) -->
+    <skip />
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Sons de toque audíveis"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Reproduzir sons ao usar o teclado"</string>
     <string name="dtmf_tone_enable_summary_off" msgid="7791065951268525678">"Reproduzir sons ao usar o teclado"</string>
@@ -425,15 +427,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Reproduzir som para notificações do cartão SD"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Cancelamento dos ruídos"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Diminuir o ruído de fundo quando falar ou gravar."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Dock"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Configurações de dock"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Áudio"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Configurações para o dock do computador anexo"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Configurações para o dock do carro anexo"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Telefone não encaixado"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Configurações para o dock anexo"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Dock não encontrado"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"O telefone deve estar encaixado para configurar o áudio do dock"</string>
     <string name="sync_settings" msgid="9186125469300013491">"Contas e sincronização"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Adicionar ou remover contas e alterar as configurações da conta"</string>
     <string name="search_settings" msgid="1910951467596035063">"Pesquisar"</string>
@@ -507,6 +500,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Espaço total"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Desmontar cartão SD"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Desmontar o cartão SD para remoção segura"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Formatar cartão SD"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Formatar (apagar) o cartão SD"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Não disponível"</string>
@@ -635,7 +634,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Gerenciar aplicativos, configurar atalhos de inicialização rápida"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Configurações de aplicativos"</string>
     <string name="install_applications" msgid="4872012136210802181">"Fontes desconhecidas"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Permite a instalação de aplicativos que não são do Market"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Os dados do seu telefone e os dados pessoais estão mais vulneráveis a ataques de aplicativos de fontes desconhecidas. Você concorda que é o único responsável por qualquer dano causado ao seu telefone ou pela perda de dados que possa resultar do uso desses aplicativos."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Informações do aplicativo"</string>
     <string name="storage_label" msgid="8700867073480107253">"Armazenamento"</string>
@@ -798,6 +798,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Nenhum serviço de acessibilidade instalado."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Este serviço de acessibilidade pode coletar todo o texto que você digitar, incluindo dados pessoais e números de cartão de crédito, menos senhas. Ele também pode registrar as interações da interface do usuário. Ele é proveniente do aplicativo <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Usar este serviço de acessibilidade?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Desativar acessibilidade?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Uso da bateria"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Onde a bateria tem sido usada"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Uso da bateria desde a desconexão do aparelho"</string>
@@ -862,6 +866,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Usar minhas config."</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"As conf. padrão abaixo substituem as conf. do aplicativo"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Configurações padrão"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Taxa de fala"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Velocidade em que o texto é falado"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Frequência do som"</string>
@@ -878,7 +886,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Controle de energia"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Atualizando configuração Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Atualizando configuração Bluetooth"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Instalador de credenciais"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"Configurações de VPN"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Conectar-se a <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Nome de usuário:"</string>
@@ -983,6 +990,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"O armazenamento de credenciais foi apagado."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"O armazenamento de credenciais foi ativado."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"O armazenamento de credenciais foi desativado."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Tom de emergência"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Definir comportamento durante uma chamada de emergência"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Privacidade"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index a8392cc..47667ca 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Неизвестно"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Включить радио"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Отключить радио"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Включить SD-журнал QXDM"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Отключить SD-журнал QXDM"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Просмотреть адресную книгу на SIM-карте"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Просм. список разреш. номеров"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Просмотреть номера служебного набора"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Получить список PDP"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Включить подключение для передачи данных"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Отключить подключение для передачи данных"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Включить данные при загрузке"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Отключить данные при загрузке"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"Обслуживается"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Вне зоны обслуживания"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Только вызовы службы экстренной помощи"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Выполнить проверку ping IP-адреса:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"ping имя узла (www.google.ru):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"Проверка клиента HTTP:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Переключить шифрование"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Выполнить проверку ping"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Обновить"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Обновить"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Выбор проверки DNS"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Настроить частоту GSM/UMTS"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Загрузка списка частот..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Настроить"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Отключение..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Отключено"</string>
     <string name="status_failed" msgid="610462050405904601">"Сбой"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Звук и изображение"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Звук и изображение"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Настройки звука"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Настройка мелодий, уведомлений, яркости экрана"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Бесшумный режим"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Все звуки, кроме мультимедиа и будильника, отключены"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Все звуки, кроме аудио и видео, отключены"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Выбрать мелодию уведомлений"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Громкость мультимедиа"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Настроить громкость музыки и видео"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Звук док-станции"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Настройки звука для подключенной док-станции"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Звук клавиш"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Включить тональные сигналы при нажатии клавиш"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Включить звук для уведомлений SD-карты"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Подавление шума"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Подавляет фоновый шум при записи или разговоре."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Док-станция"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Настройки док-станции"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Аудио"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Настройки подключенной настольной док-станции"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Настройки подключенной автомобильной док-станции"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Телефон не подключен к док-станции"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Настройки подключенной док-станции"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Док-станция не найдена."</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"Чтобы настроить звук док-станции, телефон должен быть подключен к ней."</string>
     <string name="sync_settings" msgid="9186125469300013491">"Аккаунты и синхронизация"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Добавление или удаление аккаунтов и изменение настроек аккаунта"</string>
     <string name="search_settings" msgid="1910951467596035063">"Поиск"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Всего места"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Извлечение SD-карты"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Безопасное извлечение SD-карты"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Форматировать карту SD"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Форматировать (очистить) карту SD"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Недоступно"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Управление приложениями, настройка клавиш быстрого запуска"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Настройки приложения"</string>
     <string name="install_applications" msgid="4872012136210802181">"Неизвестные источники"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Разрешить установку приложений, полученных не из Маркета"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Телефон и личные сведения более уязвимы к атакам приложений из неизвестных источников. Вы подтверждаете, что берете на себя всю ответственность в случае повреждения телефона и потери данных при использовании этих приложений."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Сведения о приложении"</string>
     <string name="storage_label" msgid="8700867073480107253">"Память"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Службы специальных возможностей не установлены."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Эта служба специальных возможностей может записывать весь текст, который вы вводите, в том числе личные данные и номера кредитных карт, за исключением паролей. Служба запущена приложением <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Использовать службу?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Отключить специальные возможности?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Расход заряда батареи"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"На что расходуется заряд батареи"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Расход заряда батареи с момента отключения от сети питания"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Всегда использовать мои настройки"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Мои настройки по умолчанию заменяют настройки приложений"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Настройки по умолчанию"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Скорость речи"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Скорость чтения текста"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Тон"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Управление питанием"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Обновление настроек Wi-Fi"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Обновление настроек Bluetooth"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Установщик регистрационных данных"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"Настройки VPN"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Подключить к \"<xliff:g id="NAME">%s</xliff:g>\""</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Имя:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Хранилище регистрационных данных очищено."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Хранилище регистрационных данных включено."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Хранилище регистрационных данных отключено."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Тональный сигнал экстренного вызова"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Настроить режим работы при экстренном вызове"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Конфиденциальность"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 803a052..8e550d9 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Okänd"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Sätt på radio"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Stäng av radio"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"Aktivera QXDM SD-logg"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"Inaktivera QXDM SD-logg"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"Visa SIM-adressbok"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Visa Fasta nummer"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Visa tjänstenummer"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"Hämta PDP-lista"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Aktivera dataanslutning"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Inaktivera dataanslutning"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Aktivera data vid start"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Inaktivera data vid start"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"I tjänst"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Ur funktion"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Endast nödsamtal"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Ping IpAdr:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Pinga värdnamn (www.google.com):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"Test av HTTP-klient:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Växla kryptering"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Köra pingtest"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Uppdatera"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Uppdatera"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"Växla mellan DNS-kontroll"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"Ställ in GSM/UMTS-band"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Läser in bandlista…"</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Ställ in"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Kopplar ifrån…"</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Frånkopplad"</string>
     <string name="status_failed" msgid="610462050405904601">"Misslyckades"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Ljud och skärm"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Inställningar för ljud och skärm"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Ljudinställningar"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Ställ in ringsignaler, aviseringar, skärmens ljusstryka"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Tyst läge"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Alla ljud utom media och larm tystas"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Alla ljud utom media tystas"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Välj ringsignal för avisering"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Mediavolym"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Ställ in volym för musik och video"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Dockningsljud"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Ljudinställningar för den anslutna dockan"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Knappljud"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Spela upp signaler när knappsatsen används"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Spela ljud vid aviseringar för SD-kort"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Ta bort bakgrundsljud"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Ta bort bakgrundsljud vid samtal eller inspelning."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Dockning"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Dockningsinställningar"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Ljud"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Inställningar för ansluten skrivbordsdocka"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Inställningar för ansluten bildocka"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Telefonen är inte dockad"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Inställningar för ansluten dockningsenhet"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Ingen dockningsenhet hittades"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"Telefonen måste vara dockad när du konfigurerar ljudet för dockning"</string>
     <string name="sync_settings" msgid="9186125469300013491">"Konton och synkronisering"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Lägg till eller ta bort konton och ändra kontoinställningar"</string>
     <string name="search_settings" msgid="1910951467596035063">"Sök"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Totalt utrymme"</string>
     <string name="sd_eject" msgid="6915293408836853020">"Montera bort SD-kort"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"Montera bort SD-kortet för säker borttagning"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"Formatera SD-kort"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"Formatera (radera) SD-kortet"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Inte tillgängligt"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Hantera program, ställ in genvägar för snabbstart"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Programinställningar"</string>
     <string name="install_applications" msgid="4872012136210802181">"Okända källor"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Tillåt installation av program som inte finns i Market"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Din telefon och dina personliga uppgifter är mer känsliga för hot från program från okända källor. Du godkänner att du själv är ansvarig för eventuella skador på din telefon eller förlust av data som kan uppstå när du använder dessa program."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Programinformation"</string>
     <string name="storage_label" msgid="8700867073480107253">"Lagring"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Inga installerade tillgänglighetstjänster."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Tillgänglighetstjänsten kan samla in all text du skriver, inklusive personliga uppgifter som kreditkortsnummer, men inte lösenord. Den kan även logga din kommunikation med användargränssnittet. Den kommer från programmet <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. Vill du aktivera tillgänglighetstjänsten?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Vill du inaktivera tillgänglighet?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Batteriförbrukning"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Program som har förbrukat batteriet"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Batteriförbrukning sedan bortkoppling"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Använd alltid mina inställningar"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Standardinställningarna nedan åsidosätter programinställningarna"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Standardinställningar"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Talhastighet"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Talhastighet för texten"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Ton"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Strömkontroll"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Uppdaterar Wi-Fi-inställningar"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Uppdatera Bluetooth-inställningar"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Installerare för användaruppgifter"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN-inställningar"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Anslut till <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Användarnamn:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Uppgiftslagringen raderades."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Uppgiftslagring är aktiverat."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Uppgiftslagring har inaktiverats."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Nödsignal"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Ange beteende vid nödsamtal"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Sekretess"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index fcf9318..37b3571 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"Bilinmiyor"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"Radyoyu aç"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"Radyoyu kapat"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"QXDM SD günlüğünü etkinleştir"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"QXDM SD günlüğünü devre dışı bırak"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"SIM adres defterini görüntüle"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"Sabit Arama Numaralarını Görüntüle"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"Hizmet Arama Numaralarını Görüntüle"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"PDP listesini al"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"Veri bağlantısını etkinleştir"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"Veri bağlantısını devre dışı bırak"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"Açılışta verileri etkinleştir"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"Açılışta verileri devre dışı bırak"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"Hizmette"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"Hizmet dışı"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"Yalnızca acil çağrılar için"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Ping IpAddr:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Ping Ana Makine Adı (www.google.com.tr):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"HTTP İstemcisi testi:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"Şifrelemeyi aç/kapa"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"Ping testini çalıştır"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"Güncelle"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"Yenile"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"DNS denetimini aç/kapa"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"GSM/UMTS bandını ayarla"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"Bant listesi yükleniyor…"</string>
     <string name="band_mode_set" msgid="5730560180249458484">"Ayarla"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"Bağlantı kesiliyor…"</string>
     <string name="status_disconnected" msgid="7561688569905126046">"Bağlantı kesildi"</string>
     <string name="status_failed" msgid="610462050405904601">"Başarısız"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"Ses ve görüntü"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Ses ve görüntü ayarları"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Ses ayarları"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Zil seslerini, bildirimleri, ekran parlaklığını ayarla"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Sessiz mod"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"Medya ve alarmlar dışında tüm sesleri susturulur"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Medya dışında tüm sesler susturulur"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"Bildirim zil sesini seç"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"Medya ses düzeyi"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"Müziğin ve videoların ses düzeyini ayarla"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"Yuva sesi"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"Takılı yuva için ses ayarları"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"Duyulabilir dokunma tonları"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"Tuş takımını kullanırken ton çal"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"SD kart bildirimleri için ses yürüt"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"Gürültü giderme"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"Konuşurken veya kaydederken arka plan gürültüsünü bastırır."</string>
-    <string name="dock_settings" msgid="1820107306693002541">"Yuva"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"Yuva ayarları"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"Ses"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Takılı masaüstü yuvası için ayarlar"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Takılı araç yuvası için ayarlar"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"Telefon yuvaya takılı değil"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Takılı yuva için ayarlar"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"Yuva bulunamadı"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"Yuva ses ayarlarını yapılandırmak için telefon yuvaya takılı olmalıdır"</string>
     <string name="sync_settings" msgid="9186125469300013491">"Hesaplar ve senkronizasyon"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Hesapları ekle veya kaldır ve hesap ayarlarını değiştir"</string>
     <string name="search_settings" msgid="1910951467596035063">"Ara"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"Toplam alan"</string>
     <string name="sd_eject" msgid="6915293408836853020">"SD kartının bağlantısını kes"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"SD kartı güvenle çıkarmak için bağlantısını kesin"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"SD kartı biçimlendir"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"SD kartı biçimlendir (sil)"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Kullanılamıyor"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"Uygulamaları yönet, hızlı başlatma kısayolları ayarla"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Uygulama ayarları"</string>
     <string name="install_applications" msgid="4872012136210802181">"Bilinmeyen kaynaklar"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"Market dışı uygulamaların yüklenmesine izin ver"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"Telefonunuz ve kişisel verileriniz, bilinmeyen kaynaklardan gelen uygulamaların saldırılarına karşı daha savunmasızdır. Bu uygulamaları kullanmanız sonucunda telefonunuzun başına gelebilecek her tür hasardan ve veri kaybından tarafınızın sorumlu olduğunu kabul edersiniz."</string>
     <string name="application_info_label" msgid="1150486628158409543">"Uygulama bilgileri"</string>
     <string name="storage_label" msgid="8700867073480107253">"Depolama"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"Yüklenmiş erişilebilirlik hizmeti yok."</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Bu erişebilirlik hizmeti, şifreler hariç ve kişisel veriler, kredi kartı numaraları dahil olmak üzere yazdığınız tüm metinleri toplayabilir. Kullanıcı arayüzü etkileşimlerinizin kaydını da tutabilir. <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> uygulamasından gelmektedir. Bu erişebilirlik hizmetini kullanmak istiyor musunuz?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Erişilebilirlik devre dışı bırakılsın mı?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"Pil kullanımı"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"Pili ne kullanıyor?"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Fişten çekildikten sonra pil kullanımı"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"Her zaman benim ayarlarımı kullan"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Aşağıdaki varsayılan ayarlar, uygulama ayarlarını geçersiz kılıyor"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"Varsayılan ayarlar"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"Konuşma hızı"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"Metnin konuşulduğu hız"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"Perde"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"Güç Denetimi"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Kablosuz ayarı güncelleniyor"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Bluetooth ayarları güncelleniyor"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"Kimlik bilgisi yükleyici"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN ayarları"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"Şuna bağlan: <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"Kullanıcı adı:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Kimlik bilgileri deposu silindi."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Kimlik bilgileri deposu etkin."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Kimlik bilgileri deposu devre dışı."</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"Acil sesi"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Acil çağrı yapıldığında nasıl işlev göreceğini ayarlayın"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Gizlilik"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index fd28bdf..651b0ac 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"未知"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"打开无线通信"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"关闭无线通信"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"启用 QXDM SD 日志"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"停用 QXDM SD 日志"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"查看 SIM 卡地址簿"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"查看固定拨号"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"查看服务拨号"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"获取 PDP 列表"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"启用数据连接"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"停用数据连接"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"启动时启用数据"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"启动时停用数据"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"正在使用中"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"不在服务区"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"仅限于急救或报警电话"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Ping IP 地址:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Ping 主机名 (www.google.com):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"HTTP 客户端测试:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"切换加密"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"运行 ping 测试"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"更新"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"刷新"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"切换 DNS 检查"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"设置 GSM/UMTS 波段"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"正在载入波段列表..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"设置"</string>
@@ -234,7 +229,7 @@
     <string name="date_time_date_format" msgid="436706100255870967">"选择日期格式"</string>
     <string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"按字母顺序排序"</string>
     <string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"按时区排序"</string>
-    <string name="security_settings_title" msgid="5168491784222013179">"位置和安全"</string>
+    <string name="security_settings_title" msgid="5168491784222013179">"地点和安全"</string>
     <string name="location_security_settings_title" msgid="4624434296446625554">"位置和安全设置"</string>
     <string name="security_settings_summary" msgid="967393342537986570">"设置我的位置、屏幕解锁、SIM 卡锁定和凭据存储锁定"</string>
     <string name="cdma_security_settings_summary" msgid="6068799952798901542">"设置我的位置、屏幕解锁和凭据存储锁定"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"正在断开连接..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"已断开连接"</string>
     <string name="status_failed" msgid="610462050405904601">"失败"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"声音和显示"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"声音和显示设置"</string>
     <string name="sound_settings" msgid="5007659014828162881">"声音设置"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"设置铃声、通知和屏幕亮度"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"静音模式"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"除媒体和闹钟之外,所有声音均设为静音"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"对所有非多媒体声音进行静音处理"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"选择通知铃声"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"媒体音量"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"设置音乐和视频的音量"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"底座音频"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"附加底座的音频设置"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"按键操作音"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"使用拨号键盘时播放按键音效"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"播放 SD 卡通知音效"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"噪音消除"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"在进行通话或录音时降低背景噪音。"</string>
-    <string name="dock_settings" msgid="1820107306693002541">"底座"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"底座设置"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"音频"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"附加桌面底座的设置"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"附加车载底座的设置"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"手机未插入底座"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"附加底座的设置"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"未找到底座"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"必须将手机插入底座,才能配置底座音频"</string>
     <string name="sync_settings" msgid="9186125469300013491">"帐户与同步"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"添加或删除帐户和更改帐户设置"</string>
     <string name="search_settings" msgid="1910951467596035063">"搜索"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"总容量"</string>
     <string name="sd_eject" msgid="6915293408836853020">"卸载 SD 卡"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"必须先卸载 SD 卡,才能将其安全移除"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"格式化 SD 卡"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"格式化(清除)SD 卡"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"不可用"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"管理应用程序,设置快速启动键"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"应用程序设置"</string>
     <string name="install_applications" msgid="4872012136210802181">"未知来源"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"允许安装非电子市场提供的应用程序"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"您的手机和个人数据更容易受到来自未知来源的应用程序攻击。您同意自己对因使用这些应用程序而造成的手机损坏或数据丢失承担全部责任。"</string>
     <string name="application_info_label" msgid="1150486628158409543">"应用程序信息"</string>
     <string name="storage_label" msgid="8700867073480107253">"存储"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"未安装辅助功能服务。"</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"此辅助功能服务可能会收集您键入的所有文字,包括信用卡号码等个人数据,但并不会收集您输入的密码,而且它也可能记录您的用户界面交互行为。该服务由应用程序“<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>”所提供。要使用此辅助功能服务吗?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"是否停用辅助功能?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"电量使用情况"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"耗电情况"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"拔下电源后的电量消耗情况"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"总是使用我的设置"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"使用以下默认设置代替应用程序设置"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"默认设置"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"语速"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"文字转换成语音后的播放速度"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"音高"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"电量控制"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"正在更新 Wi-Fi 设置"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"正在更新蓝牙设置"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"凭证安装程序"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"虚拟专用网设置"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"连接到 <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"用户名:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"该凭证存储已删除。"</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"凭证存储已启用。"</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"凭证存储已停用。"</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"紧急提示音"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"设置进行紧急呼救时的行为"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"隐私权"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 0a18532..d8127cc 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -20,16 +20,10 @@
     <string name="device_info_default" msgid="7847265875578739287">"未知的"</string>
     <string name="turn_on_radio" msgid="8706561489788373676">"開啟無線通訊"</string>
     <string name="turn_off_radio" msgid="1820294552893884115">"關閉無線通訊"</string>
-    <string name="turn_on_qxdm" msgid="634471960429852506">"啟用 QXDM SD 記錄"</string>
-    <string name="turn_off_qxdm" msgid="5719931520533431085">"停用 QXDM SD 記錄"</string>
     <string name="radioInfo_menu_viewADN" msgid="8743377494429930831">"檢視 SIM 地址簿"</string>
     <string name="radioInfo_menu_viewFDN" msgid="7934301566925610318">"查看固定撥號"</string>
     <string name="radioInfo_menu_viewSDN" msgid="7130280686244955669">"檢視服務撥號號碼"</string>
     <string name="radioInfo_menu_getPDP" msgid="560610293888406317">"取得 PDP 清單"</string>
-    <string name="radioInfo_menu_enableData" msgid="5452877756028654595">"啟用資料連線"</string>
-    <string name="radioInfo_menu_disableData" msgid="7645419447977636497">"停用資料連線"</string>
-    <string name="radioInfo_menu_enableDataOnBoot" msgid="1438925440424627675">"開機顯示資料"</string>
-    <string name="radioInfo_menu_disableDataOnBoot" msgid="1311993066146980972">"開機不顯示資料"</string>
     <string name="radioInfo_service_in" msgid="1915416319177520020">"服務中"</string>
     <string name="radioInfo_service_out" msgid="5238736759641916278">"超出服務範圍"</string>
     <string name="radioInfo_service_emergency" msgid="2485604591272668370">"只能撥打緊急電話"</string>
@@ -170,12 +164,13 @@
     <string name="radio_info_ping_ipaddr" msgid="498747917793263530">"Ping IP 位址:"</string>
     <string name="radio_info_ping_hostname" msgid="3054888474808217853">"Ping 主機名稱 (www.google.com.tw):"</string>
     <string name="radio_info_http_client_test" msgid="5733604021077701555">"HTTP 用戶端測試:"</string>
-    <string name="radio_info_toggle_ciph_label" msgid="1506817306430095478">"選取加密"</string>
     <string name="ping_test_label" msgid="7255376471490860631">"執行 ping 測試"</string>
     <string name="radio_info_smsc_label" msgid="6399460520126501354">"SMSC:"</string>
     <string name="radio_info_smsc_update_label" msgid="7258686760358791539">"更新"</string>
     <string name="radio_info_smsc_refresh_label" msgid="6902302130315125102">"重新整理"</string>
     <string name="radio_info_toggle_dns_check_label" msgid="8292252930563286858">"切換 DNS 檢查"</string>
+    <!-- no translation found for oem_radio_info_label (6163141792477958941) -->
+    <skip />
     <string name="band_mode_title" msgid="954174198903776205">"設定 GSM/UMTS 頻道"</string>
     <string name="band_mode_loading" msgid="548764766363847336">"載入頻道清單..."</string>
     <string name="band_mode_set" msgid="5730560180249458484">"設定"</string>
@@ -387,10 +382,7 @@
     <string name="status_disconnecting" msgid="8468213362967337584">"連線中斷..."</string>
     <string name="status_disconnected" msgid="7561688569905126046">"已中斷連線"</string>
     <string name="status_failed" msgid="610462050405904601">"失敗"</string>
-    <string name="sound_and_display_settings" msgid="349770582993029003">"音效與顯示"</string>
-    <string name="sound_and_display_settings_title" msgid="5036144539683697330">"音效與顯示設定"</string>
     <string name="sound_settings" msgid="5007659014828162881">"音效設定"</string>
-    <string name="sound_and_display_settings_summary" msgid="1433943789593286064">"設定鈴聲、通知與螢幕亮度"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"靜音模式"</string>
     <string name="silent_mode_summary" msgid="9081534746589616108">"將媒體和鬧鐘以外的所有音效靜音"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"將所有非媒體音效設為靜音"</string>
@@ -410,6 +402,7 @@
     <string name="notification_sound_dialog_title" msgid="7057274209079144726">"選取通知鈴聲"</string>
     <string name="media_volume_title" msgid="7844516127427195383">"媒體音量"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"設定音樂與影片的音量"</string>
+    <string name="dock_settings_title" msgid="5121296855098055941">"座架音訊"</string>
     <string name="dock_settings_summary" msgid="455802113668982481">"附加座架的音訊設定"</string>
     <string name="dtmf_tone_enable_title" msgid="1453831168789523185">"觸控音效"</string>
     <string name="dtmf_tone_enable_summary_on" msgid="3028201873989887327">"使用撥號面板時播放按鍵音效"</string>
@@ -425,15 +418,6 @@
     <string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"播放 SD 卡通知音效"</string>
     <string name="audio_record_proc_title" msgid="4271091199976457534">"噪音消除"</string>
     <string name="audio_record_proc_summary" msgid="8113628457499616498">"在說話或錄音時抑制背景雜音。"</string>
-    <string name="dock_settings" msgid="1820107306693002541">"座架"</string>
-    <string name="dock_settings_title" msgid="9161438664257429372">"座架設定"</string>
-    <string name="dock_audio_settings_title" msgid="3324750259959570305">"音效"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"隨附的桌上型座架設定"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"隨附的車用座架設定"</string>
-    <string name="dock_audio_summary_none" msgid="289909253741048784">"手機未固定至座架"</string>
-    <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"隨附的座架設定"</string>
-    <string name="dock_not_found_title" msgid="3290961741828952424">"找不到座架"</string>
-    <string name="dock_not_found_text" msgid="3035260358985111855">"手機必須固定至座架才能設定座架音效"</string>
     <string name="sync_settings" msgid="9186125469300013491">"帳戶與同步處理"</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"新增或移除帳戶和變更帳戶設定"</string>
     <string name="search_settings" msgid="1910951467596035063">"搜尋"</string>
@@ -507,6 +491,12 @@
     <string name="memory_size" msgid="6629067715017232195">"總空間"</string>
     <string name="sd_eject" msgid="6915293408836853020">"卸載 SD 卡"</string>
     <string name="sd_eject_summary" msgid="3315557796211542962">"必須先卸載 SD 卡,才能安全移除"</string>
+    <!-- no translation found for sd_insert_summary (2048640010381803841) -->
+    <skip />
+    <!-- no translation found for sd_mount (5940523765187704135) -->
+    <skip />
+    <!-- no translation found for sd_mount_summary (4936591681679097699) -->
+    <skip />
     <string name="sd_format" msgid="5448738337382712203">"將 SD 卡格式化"</string>
     <string name="sd_format_summary" msgid="6616491027883134004">"將 SD 卡格式化 (清除)"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"無法取得資訊"</string>
@@ -635,7 +625,8 @@
     <string name="applications_settings_summary" msgid="2714215108369119717">"管理應用程式,設定快速啟動鍵"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"應用程式設定"</string>
     <string name="install_applications" msgid="4872012136210802181">"未知的來源"</string>
-    <string name="install_unknown_applications" msgid="4657036956866203596">"允許安裝非 Market 應用程式"</string>
+    <!-- no translation found for install_unknown_applications (6612824788917283662) -->
+    <skip />
     <string name="install_all_warning" msgid="1923717607319933741">"未知來源的應用程式可能會損害您的手機及個人資訊。如使用這些應用程式而造成手機受損或資料遺失,您必須自行承擔責任。"</string>
     <string name="application_info_label" msgid="1150486628158409543">"應用程式資訊"</string>
     <string name="storage_label" msgid="8700867073480107253">"儲存空間"</string>
@@ -798,6 +789,10 @@
     <string name="no_accessibility_services_summary" msgid="694578333333808159">"尚未安裝協助工具服務。"</string>
     <string name="accessibility_service_security_warning" msgid="4066258132331302670">"此協助工具服務可能會收集您輸入的所有文字,包括個人資料及信用卡號碼,但並不會收集您輸入的密碼,而且它也可能會記錄您的使用者介面互動行為。該服務是由應用程式「<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>」所提供,要使用此協助工具服務嗎?"</string>
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"要停用協助工具嗎?"</string>
+    <!-- no translation found for accessibility_service_no_apps_title (898893674114288531) -->
+    <skip />
+    <!-- no translation found for accessibility_service_no_apps_message (2450056749545404807) -->
+    <skip />
     <string name="power_usage_summary_title" msgid="5180282911164282324">"電池使用狀況"</string>
     <string name="power_usage_summary" msgid="7237084831082848168">"查看正在消耗電力的功能"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"拔除插頭後的電池使用狀況"</string>
@@ -862,6 +857,10 @@
     <string name="use_default_tts_settings_title" msgid="1577063839539732930">"永遠使用我的設定"</string>
     <string name="use_default_tts_settings_summary" msgid="4253502106159206276">"下列預設設定會覆寫應用程式設定"</string>
     <string name="tts_default_settings_section" msgid="5787915620218907443">"預設設定"</string>
+    <!-- no translation found for tts_default_synth_title (29467896463371992) -->
+    <skip />
+    <!-- no translation found for tts_default_synth_summary (6482936537135251690) -->
+    <skip />
     <string name="tts_default_rate_title" msgid="6030550998379310088">"語音速率"</string>
     <string name="tts_default_rate_summary" msgid="4061815292287182801">"文字轉換成語音後的播放速度"</string>
     <string name="tts_default_pitch_title" msgid="6135942113172488671">"音調"</string>
@@ -878,7 +877,6 @@
     <string name="gadget_title" msgid="7455548605888590466">"電源控制"</string>
     <string name="gadget_toggle_wifi" msgid="2382963973155082629">"正在更新 Wi-Fi 設定"</string>
     <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"正在更新藍牙設定"</string>
-    <string name="credential_installer_activity_title" msgid="7600661521831762521">"認證安裝程式"</string>
     <string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN 設定"</string>
     <string name="vpn_connect_to" msgid="2541409082892684362">"連線至<xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="vpn_username_colon" msgid="7854930370861306247">"使用者名稱:"</string>
@@ -983,6 +981,26 @@
     <string name="credentials_erased" msgid="7700309135582200849">"已清除認證儲存空間內容。"</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"已啟用認證儲存空間。"</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"已停用認證儲存空間。"</string>
+    <!-- no translation found for encrypted_fs_category (1841367653663913956) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable (3884033081603327729) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_summary (5635188119509076089) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_dialog (919487211207214266) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_dialog (6960413613985682501) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_enable_button (8453841319751433751) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_disable_button (8468354944060220496) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_button (4785921255266305799) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_cancel_confirm (853572431153803557) -->
+    <skip />
+    <!-- no translation found for encrypted_fs_alert_dialog_title (583462447886934755) -->
+    <skip />
     <string name="emergency_tone_title" msgid="1055954530111587114">"緊急警示音"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"設定撥打緊急電話時的運作方式"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"隱私設定"</string>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 2981b12..0e5c920 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -17,25 +17,25 @@
 ** limitations under the License.
 */
 -->
-<resources>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <!-- Choices for timezone picker first level.
          These values will be used as search terms for TimeZone displayName
          strings. --> <skip />
     <!-- The time zone picker screen has two levels.  The first level allows the user to choose a region. -->
     <string-array name="timezone_filters">
-	<!-- The next level of the time zoner picker should show time zones from the Americas. -->
+    <!-- The next level of the time zoner picker should show time zones from the Americas. -->
         <item>America</item>
-	<!-- The next level of the time zoner picker should show time zones from Europe. -->
+    <!-- The next level of the time zoner picker should show time zones from Europe. -->
         <item>Europe</item>
-	<!-- The next level of the time zoner picker should show time zones from Africa. -->
+    <!-- The next level of the time zoner picker should show time zones from Africa. -->
         <item>Africa</item>
-	<!-- The next level of the time zoner picker should show time zones from Asia. -->
+    <!-- The next level of the time zoner picker should show time zones from Asia. -->
         <item>Asia</item>
-	<!-- The next level of the time zoner picker should show time zones from Australia. -->
+    <!-- The next level of the time zoner picker should show time zones from Australia. -->
         <item>Australia</item>
-	<!-- The next level of the time zoner picker should show time zones from Pacific. -->
+    <!-- The next level of the time zoner picker should show time zones from Pacific. -->
         <item>Pacific</item>
-	<!-- The next level of the time zoner picker should show time zones from ALL regions. -->
+    <!-- The next level of the time zoner picker should show time zones from ALL regions. -->
         <item>All</item>
     </string-array>
 
@@ -98,6 +98,22 @@
         <item>1800000</item>
     </string-array>
 
+    <!-- Unlock method in SecuritySettings --><skip/>
+    <string-array name="unlock_method_entries">
+        <item>Password</item>
+        <item>PIN</item>
+        <item>Pattern</item>
+        <item>None</item>
+    </string-array>
+
+    <!-- Do not translate. -->
+    <string-array name="unlock_method_values" translatable="false">
+        <item>password</item>
+        <item>pin</item>
+        <item>pattern</item>
+        <item>none</item>
+    </string-array>
+
     <!-- TTS settings -->
 
     <!-- Default speech rate choices -->
@@ -133,7 +149,7 @@
         <item>120</item>
         <item>150</item>
     </string-array>
-    
+
     <!-- Default language choices -->
     <string-array name="tts_lang_entries">
         <item>American English</item>
@@ -164,6 +180,56 @@
 
     <!-- Wi-Fi settings -->
 
+    <!-- Match this with the order of NetworkInfo.DetailedState. --> <skip />
+    <!-- Wi-Fi settings. The status messages when the network is unknown. -->
+    <string-array name="wifi_status">
+        <!-- Status message of Wi-Fi when it is idle. -->
+        <item></item>
+        <!-- Status message of Wi-Fi when it is scanning. -->
+        <item>Scanning\u2026</item>
+        <!-- Status message of Wi-Fi when it is connecting. -->
+        <item>Connecting\u2026</item>
+        <!-- Status message of Wi-Fi when it is authenticating. -->
+        <item>Authenticating\u2026</item>
+        <!-- Status message of Wi-Fi when it is obtaining IP address. -->
+        <item>Obtaining IP address\u2026</item>
+        <!-- Status message of Wi-Fi when it is connected. -->
+        <item>Connected</item>
+        <!-- Status message of Wi-Fi when it is suspended. -->
+        <item>Suspended</item>
+        <!-- Status message of Wi-Fi when it is disconnecting. -->
+        <item>Disconnecting\u2026</item>
+        <!-- Status message of Wi-Fi when it is disconnected. -->
+        <item>Disconnected</item>
+        <!-- Status message of Wi-Fi when it is a failure. -->
+        <item>Unsuccessful</item>
+    </string-array>
+
+    <!-- Match this with the order of NetworkInfo.DetailedState. --> <skip />
+    <!-- Wi-Fi settings. The status messages when the network is known. -->
+    <string-array name="wifi_status_with_ssid">
+        <!-- Status message of Wi-Fi when it is idle. -->
+        <item></item>
+        <!-- Status message of Wi-Fi when it is scanning. -->
+        <item>Scanning\u2026</item>
+        <!-- Status message of Wi-Fi when it is connecting to a network. -->
+        <item>Connecting to <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+        <!-- Status message of Wi-Fi when it is authenticating with a network. -->
+        <item>Authenticating with <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+        <!-- Status message of Wi-Fi when it is obtaining IP address from a network. -->
+        <item>Obtaining IP address from <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+        <!-- Status message of Wi-Fi when it is connected to a network. -->
+        <item>Connected to <xliff:g id="network_name">%1$s</xliff:g></item>
+        <!-- Status message of Wi-Fi when it is suspended. -->
+        <item>Suspended</item>
+        <!-- Status message of Wi-Fi when it is disconnecting from a network. -->
+        <item>Disconnecting from <xliff:g id="network_name">%1$s</xliff:g>\u2026</item>
+        <!-- Status message of Wi-Fi when it is disconnected. -->
+        <item>Disconnected</item>
+        <!-- Status message of Wi-Fi when it is a failure. -->
+        <item>Unsuccessful</item>
+    </string-array>
+
     <!-- Match this with code. --> <skip />
     <!-- Wi-Fi settings.  The type of security a Wi-Fi network has.  The user can choose this when he adds a manual network, or configures an existing network. -->
     <string-array name="wifi_security_entries">
@@ -202,7 +268,7 @@
         <!-- WEP key that is in hexadecimal. -->
         <item>WEP hexadecimal</item>
     </string-array>
-    
+
     <!-- Wi-Fi settings. Presented as a list dialog to the user to choose the Wi-Fi sleep policy. -->
     <string-array name="wifi_sleep_policy_entries">
         <!-- Wi-Fi should go to sleep when the screen turns off. -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9b6977d..98a24e8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4,9 +4,9 @@
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at
-  
+
           http://www.apache.org/licenses/LICENSE-2.0
-  
+
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -30,10 +30,6 @@
     <string name="turn_on_radio">Turn on radio</string>
     <!-- Phone Info screen. Button label to turn off the radio . Only shown in diagnostic screen, so precise translation is not needed. -->
     <string name="turn_off_radio">Turn off radio</string>
-    <!-- Phone Info screen. Button label to turn on the log for QXDM SD . Only shown in diagnostic screen, so precise translation is not needed. -->
-    <string name="turn_on_qxdm">Enable QXDM SD log</string>
-    <!-- Phone Info screen. Button label to turn off the log for QXDM SD . Only shown in diagnostic screen, so precise translation is not needed. -->
-    <string name="turn_off_qxdm">Disable QXDM SD log</string>
 
     <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_menu_viewADN">View SIM address book</string>
@@ -43,14 +39,6 @@
     <string name="radioInfo_menu_viewSDN">View Service Dialing Numbers</string>
     <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_menu_getPDP">Get PDP list</string>
-    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
-    <string name="radioInfo_menu_enableData">Enable data connection</string>
-    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
-    <string name="radioInfo_menu_disableData">Disable data connection</string>
-    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
-    <string name="radioInfo_menu_enableDataOnBoot">Enable data on boot</string>
-    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
-    <string name="radioInfo_menu_disableDataOnBoot">Disable data on boot</string>
 
     <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_service_in">In service</string>
@@ -147,7 +135,7 @@
     <string name="battery_info_awake_plugged">Awake time when charging:</string>
     <!-- Battery Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_screen_on">Screen ON time:</string>
-    
+
 
     <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_status_unknown">Unknown</string>
@@ -170,7 +158,7 @@
     <string name="battery_info_power_usb">USB</string>
     <string name="battery_info_power_ac_usb">AC+USB</string>
     <string name="battery_info_power_unknown">Unknown</string>
-    
+
     <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_health_unknown">Unknown</string>
     <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
@@ -371,8 +359,6 @@
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_http_client_test">HTTP Client test:</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
-    <string name="radio_info_toggle_ciph_label">Toggle ciphering</string>
-    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="ping_test_label">Run ping test</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_smsc_label">SMSC:</string>
@@ -382,6 +368,8 @@
     <string name="radio_info_smsc_refresh_label">Refresh</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_toggle_dns_check_label">Toggle DNS check</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
+    <string name="oem_radio_info_label">OEM-specific Info/Settings</string>
 
     <!-- Band Mode Selection -->
     <!-- Band mode screen.  Title of activity. -->
@@ -528,6 +516,24 @@
     <string name="cdma_security_settings_summary">Set My Location, screen unlock, credential storage lock</string>
     <!-- In the security screen, the header title for settings related to  Passwords-->
     <string name="security_passwords_title">Passwords</string>
+    <!-- Name shown for changing the unlock method -->
+    <string name="unlock_method_title">Unlock Method</string>
+    <!-- Summary shown for changing the unlock method -->
+    <string name="unlock_method_summary">Change the method used to unlock your phone</string>
+    <!-- Error shown in popup when PIN is too short -->
+    <string name="pin_password_too_short">Password must be at least %d digits</string>
+    <!-- Error shown in popup when PIN is too long -->
+    <string name="pin_password_too_long">Password can be no longer than %d digits</string>
+    <!-- Error shown when in PIN mode and user enters a non-digit -->
+    <string name="pin_password_illegal_character">PIN must contain only digits 0-9</string>
+    <!-- Error shown when in PASSWORD mode and user enters an invalid character -->
+    <string name="pin_password_contains_non_digits">Password contains an illegal character</string>
+    <!-- In the security screen, the header title for settings related to device admins -->
+    <string name="device_admin_title">Device administration</string>
+    <!-- Title of preference to manage device admins -->
+    <string name="manage_device_admin">Select device administrators</string>
+    <!-- Summary of preference to manage device policies -->
+    <string name="manage_device_admin_summary">Add or remove device administrators</string>
 
     <!-- Bluetooth settings -->
     <!-- Bluetooth settings check box title on Main Settings screen -->
@@ -565,7 +571,7 @@
     <!-- Title for BT error dialogs. -->
     <string name="bluetooth_error_title">Attention</string>
     <!-- Message for the error dialog when BT pairing fails generically. -->
-    <string name="bluetooth_pairing_error_message">There was a problem pairing with <xliff:g id="device_name">%1$s</xliff:g>.</string> 
+    <string name="bluetooth_pairing_error_message">There was a problem pairing with <xliff:g id="device_name">%1$s</xliff:g>.</string>
     <!-- Message for the error dialog when BT pairing fails because the PIN /
     Passkey entered is incorrect. -->
     <string name="bluetooth_pairing_pin_error_message">There was a problem pairing with <xliff:g id="device_name">%1$s</xliff:g> because the PIN or Passkey is incorrect.</string>
@@ -575,7 +581,7 @@
     <string name="bluetooth_pairing_rejected_error_message">Pairing rejected by <xliff:g id="device_name">%1$s</xliff:g>.</string>
 
     <!-- Message for the error dialog when BT connecting operation fails generically. -->
-    <string name="bluetooth_connecting_error_message">There was a problem connecting to <xliff:g id="device_name">%1$s</xliff:g>.</string> 
+    <string name="bluetooth_connecting_error_message">There was a problem connecting to <xliff:g id="device_name">%1$s</xliff:g>.</string>
 
     <!-- Do not translate -->
     <string name="bluetooth_device_info_alias">Device alias</string>
@@ -588,7 +594,7 @@
 
     <!-- Bluetooth settings: The title of the preference (list item) that initiates a scan for devices -->
     <string name="bluetooth_preference_scan_title">Scan for devices</string>
-    
+
     <!-- Bluetooth settings.  Context menu item for a device.  Action will connect to all profiles on the device. -->
     <string name="bluetooth_device_context_connect">Connect</string>
     <!-- Bluetooth settings.  Context menu item for a device.  Action will disconnect from all profiles on the device. -->
@@ -600,8 +606,8 @@
     <!-- Bluetooth settings.  Context menu item for a device.  Action will disconnect and remove pairing with the device. -->
     <string name="bluetooth_device_context_disconnect_unpair">Disconnect &amp; unpair</string>
     <!-- Bluetooth settings.  Context menu item for a device.  Action will take the user to another screen where they can choose exactly which profiles to connect to. -->
-    <string name="bluetooth_device_context_connect_advanced">Options\u2026</string>    
-    
+    <string name="bluetooth_device_context_connect_advanced">Options\u2026</string>
+
     <!-- Bluetooth settings.  The title of the screen to pick which profiles to connect to on the device.  For example, headphones may have both A2DP and headset, this allows the user to choose which one he wants to connect to. -->
     <string name="bluetooth_connect_specific_profiles_title">Connect to\u2026</string>
 
@@ -707,13 +713,15 @@
     <string name="ip_address">IP address</string>
     <!-- Label for the signal strength -->
     <string name="signal">Signal strength</string>
-    <!--Wireless controls setting screen, Wi-Fi check box summary text when turning Wi-Fi on -->
+    <!--Summary text when turning Wi-Fi or bluetooth on -->
     <string name="wifi_starting">Turning on\u2026</string>
-    <!--Wireless controls setting screen, Wi-Fi check box summary text when turning Wi-Fi off -->
+    <!--Summary text when turning Wi-Fi or bluetooth off -->
     <string name="wifi_stopping">Turning off\u2026</string>
-    <!-- Generic error message , probably not used-->
+    <!-- Summary text when Wi-Fi or bluetooth has error -->
     <string name="wifi_error">Error</string>
-    <!-- Error message when Wi-Fi can't start -->
+    <!-- Toast message when Wi-Fi or bluetooth is disallowed in airplane mode -->
+    <string name="wifi_in_airplane_mode">In airplane mode</string>
+     <!-- Error message when Wi-Fi can't start -->
     <string name="error_starting">Unable to start Wi-Fi</string>
     <!-- Error message when Wi-Fi can't stop -->
     <string name="error_stopping">Unable to stop Wi-Fi</string>
@@ -819,10 +827,96 @@
     <string name="wifi_setting_sleep_policy_summary">Specify when to switch from Wi-Fi to mobile data</string>
     <!-- Wi-Fi settings screen, generic error message when the sleep policy could not be set. -->
     <string name="wifi_setting_sleep_policy_error">There was a problem setting the sleep policy.</string>
-    
+
     <!-- Wi-Fi settings screen, advanced, title of the item to show the Wi-Fi device's MAC address. -->
     <string name="wifi_advanced_mac_address_title">MAC address</string>
 
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Wi-Fi Testing on the diagnostic screen-->
+    <string name="testing_wifi_info" translatable="false">Wifi information</string>
+
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Menu item for WifiManager disableNetwork API-->
+    <string name="disableNetwork" translatable="false">disableNetwork</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Menu item for WifiManager enableNetwork API-->
+    <string name="enableNetwork" translatable="false">enableNetwork</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Menu item for WifiManager disconnect API-->
+    <string name="disconnect" translatable="false">disconnect</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Menu item for WifiManager getConfiguredNetworks API-->
+    <string name="getConfiguredNetworks" translatable="false">getConfiguredNetworks</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Menu item for WifiManager getConnectionInfo API-->
+    <string name="getConnectionInfo" translatable="false">getConnectionInfo</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Menu item on Wifi information screen-->
+    <string name="wifi_api_test" translatable="false">Wifi API</string>
+
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Menu item on Wifi information screen-->
+    <string name="wifi_status_test" translatable="false">Wifi Status</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Button text on Wifi Status screen-->
+    <string name="wifi_update" translatable="false">Refresh Stats</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Status screen-->
+    <string name="wifi_state_label" translatable="false">Wifi State :</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Status screen-->
+    <string name="network_state_label" translatable="false">Network State :</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+        Label on Wifi Status screen-->
+    <string name="supplicant_state_label" translatable="false">Supplicant State :</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Status screen-->
+    <string name="rssi_label" translatable="false">RSSI :</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Status screen-->
+    <string name="bssid_label" translatable="false">BSSID :</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Status screen-->
+    <string name="ssid_label" translatable="false">SSID :</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Status screen-->
+    <string name="hidden_ssid_label" translatable="false">Hidden SSID :</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Status screen-->
+    <string name="ipaddr_label" translatable="false">IPaddr :</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Status screen-->
+    <string name="macaddr_label" translatable="false">MAC addr :</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Status screen-->
+    <string name="networkid_label" translatable="false">Network ID :</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Status screen-->
+    <string name="link_speed_label" translatable="false">Link Speed :</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Status screen-->
+    <string name="scan_list_label" translatable="false">Scan results :</string>
+
+    <!-- wifi state values-->
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
+    <string name="wifi_state_disabling" translatable="false">Disabling</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
+    <string name="wifi_state_disabled" translatable="false">Disabled</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
+    <string name="wifi_state_enabling" translatable="false">Enabling</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
+    <string name="wifi_state_enabled" translatable="false">Enabled</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
+    <string name="wifi_state_unknown" translatable="false">Unknown</string>
+
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Menu item on Wifi information screen-->
+    <string name="wifi_config_info" translatable="false">Wifi Config</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary
+         Label on Wifi Configuration screen-->
+    <string name="config_list_label" translatable="false">Configured Networks</string>
+
+
     <!-- Status message of Wi-Fi when it is scanning -->
     <string name="fragment_status_scanning">Scanning\u2026</string>
     <!-- Status message of Wi-Fi when it is connecting to a particular network -->
@@ -858,28 +952,28 @@
     <string name="status_failed">Unsuccessful</string>
 
     <!-- Sound and alerts settings -->
-    <!-- Main Settings screen setting option name to go into the sound and display settings screen -->
-    <string name="sound_and_display_settings">Sound &amp; display</string>
-    <!-- Main Settings screen setting option name to go into the sound and display settings screen -->
-    <string name="sound_and_display_settings_title">Sound &amp; display settings</string>
+    <!-- Main Settings screen setting option name to go into the sound settings screen -->
+    <string name="sound_settings_title">Sound</string>
+    <!-- Main Settings screen setting option name to go into the display settings screen -->
+    <string name="display_settings_title">Display</string>
     <!-- Sound settings screen heading -->
     <string name="sound_settings">Sound settings</string>
-    <!-- Main Settings screen setting option summary text for the item to go into the soudn and display settings screen-->
-    <string name="sound_and_display_settings_summary">Set ringtones, notifications, screen brightness</string>
     <!-- Sound settings screen, setting option name checkbox -->
     <string name="silent_mode_title">Silent mode</string>
     <!-- Sound settings screen, setting option summary text when going into silent mode.  Media and alarms sounds WILL NOT be silenced in silent mode. -->
-    <string name="silent_mode_summary">All sounds except media &amp; alarms are silenced</string>
+    <string name="silent_mode_summary">Silence all sounds except media &amp; alarms</string>
     <!-- Sound settings screen, setting option summary text when going into silent mode.  Media WILL NOT be silenced in silent mode, but alarms WILL be silenced. -->
     <string name="silent_mode_incl_alarm_summary">All sounds except media are silenced</string>
     <!-- Sound settings screen, setting option name to pick ringtone (a list dialog comes up)-->
     <string name="ringtone_title">Phone ringtone</string>
     <!-- Sound settings screen, setting option summary text -->
-    <string name="ringtone_summary">Set your default incoming call ringtone</string>
+    <string name="ringtone_summary">""</string>
+    <!-- Sound settings screen, volume title -->
+    <string name="all_volume_title">Volume</string>
     <!-- Sound settings screen, setting option name -->
     <string name="ring_volume_title">Ringer volume</string>
     <!-- Sound settings screen, setting option summary text -->
-    <string name="ring_volume_summary">Set volume for incoming calls and notifications</string>
+    <string name="ring_volume_summary">""</string>
     <!-- Sound settings screen, setting option name checkbox -->
     <string name="vibrate_title">Phone vibrate</string>
     <!-- Sound settings screen, setting option summary text -->
@@ -887,7 +981,7 @@
     <!-- Sound settings screen, setting option name -->
     <string name="notification_sound_title">Notification ringtone</string>
     <!-- Sound settings screen, setting option summary text -->
-    <string name="notification_sound_summary">Set your default notification ringtone</string>
+    <string name="notification_sound_summary">""</string>
     <!-- Sound settings screen, notification light repeat pulsing title -->
     <string name="notification_pulse_title">Pulse notification light</string>
     <!-- Sound settings screen, notification light repeat pulsing summary -->
@@ -905,6 +999,8 @@
     <string name="media_volume_title">Media volume</string>
     <!-- Sound settings screen, setting option summary text -->
     <string name="media_volume_summary">Set volume for music and videos</string>
+    <!-- Sound settings screen, alarm volume slider title -->
+    <string name="alarm_volume_title">Alarm volume</string>
     <!-- Sound settings screen, dock settings summary-->
     <string name="dock_settings_summary">Audio settings for the attached dock</string>
     <!-- Sound settings screen, setting check box label -->
@@ -975,7 +1071,7 @@
     <!-- Sound & display settings screen, animations option summary text when check box is clear -->
     <string name="animations_summary_off">Show animation when opening &amp; closing windows</string>
     <!-- Sound & display settings screen, accelerometer-based rotation check box label -->
-    <string name="accelerometer_title">Orientation</string>
+    <string name="accelerometer_title">Auto-rotate screen</string>
     <!-- Sound & display settings screen, accelerometer-based rotation summary text when check box is selected -->
     <string name="accelerometer_summary_on">Switch orientation automatically when rotating phone</string>
     <!-- Sound & display settings screen, accelerometer-based rotation summary text when check box is clear -->
@@ -1039,7 +1135,7 @@
     <!-- About phone screen, list item title.  Takes the user to the screen for seeing and installing system updates. -->
     <string name="system_update_settings_list_item_title">System updates</string>
     <!-- About phone screen, list item summary.  Takes the user to the screen for seeing and installing system updates. -->
-    <string name="system_update_settings_list_item_summary">Check for system updates</string>
+    <string name="system_update_settings_list_item_summary">""</string>
 
     <!-- About phone screen, status item label -->
     <string name="firmware_version">Firmware version</string>
@@ -1112,6 +1208,14 @@
     <string name="sd_eject">Unmount SD card</string>
     <!-- SD card & phone storage settings item title that will result in the phone unmounting the SD card.  This will be done before the user phyiscally removes the SD card from the phone.  Kind of like the "Safely remove" on some operating systems.   -->
     <string name="sd_eject_summary">Unmount the SD card for safe removal</string>
+
+   
+    <!-- SD card & phone storage settings item summary that is displayed when no SD card is inserted -->
+    <string name="sd_insert_summary">Insert an SD card for mounting</string>
+    <!-- SD card & phone storage settings item title that will result in the phone mounting the SD card. -->
+    <string name="sd_mount">Mount SD card</string>
+    <!-- SD card & phone storage settings item title that will result in the phone mounting the SD card. -->
+    <string name="sd_mount_summary">Mount the SD card</string>
     <!-- SD card & phone storage settings item title that will result in the phone formatting the SD card.   -->
     <string name="sd_format">Format SD card</string>
     <!-- SD card & phone storage settings item title that will result in the phone unmounting the SD card.   -->
@@ -1188,10 +1292,10 @@
     <string name="error_mnc_not23">MNC field must be 2 or 3 digits.</string>
     <!-- The message of dialog indicated restoring default APN settings in progress -->
     <string name="restore_default_apn">Restoring default APN settings</string>
-    <!-- APNs screen menu option to reset default APN settings --> 
-    <string name="menu_restore">Reset to default</string>    
-    <!-- APNs screen toast message to inform reset default APN settings is completed -->     
-    <string name="restore_default_apn_completed">Reset default APN settings completed</string>    
+    <!-- APNs screen menu option to reset default APN settings -->
+    <string name="menu_restore">Reset to default</string>
+    <!-- APNs screen toast message to inform reset default APN settings is completed -->
+    <string name="restore_default_apn_completed">Reset default APN settings completed</string>
 
     <!-- Master Clear -->
     <!-- SD card & phone storage settings screen, setting option name under Internal phone storage heading -->
@@ -1314,11 +1418,23 @@
     <string name="settings_safetylegal_activity_loading">Loading\u2026</string>
 
     <!-- Lock Pattern settings -->
+    <!-- Header on first screen of choose password/PIN flow -->
+    <string name="lockpassword_choose_your_password_header">Choose your password</string>
+    <!-- Header on password confirm screen -->
+    <string name="lockpassword_confirm_your_password_header">Confirm password</string>
+    <!-- Header on password confirm screen if second password doesn't match the first. -->
+    <string name="lockpassword_confirm_passwords_dont_match">Passwords don\'t match</string>
+    <!-- Header shown if passwords match -->
+    <string name="lockpassword_password_confirmed_header">Password confirmed</string>
+
+    <!-- Lock Pattern settings -->
     <!-- Security & location settings screen, header -->
     <string name="lock_settings_title">Screen unlock pattern</string>
     <!-- Security & location settings screen, setting option name -->
     <string name="lockpattern_change_lock_pattern_label">Change unlock pattern</string>
     <!-- Security & location settings screen, change unlock pattern screen instruction when the user chooses "Change unlock pattern".  We first ask the user toe nter the current pattern, and this is the message seen -->
+    <string name="lockpattern_change_lock_pin_label">Change unlock PIN</string>
+    <!-- Security & location settings screen, change unlock pattern screen instruction when the user chooses "Change unlock pattern".  We first ask the user toe nter the current pattern, and this is the message seen -->
     <string name="lockpattern_need_to_unlock">Confirm saved pattern</string>
     <!-- Do not translate. -->
     <string name="lockpattern_need_to_unlock_footer"></string>
@@ -1382,8 +1498,8 @@
         \n<font height="17">\n</font><b>3</b>\u00A0 Redraw your pattern to confirm.
         \n<font height="17">\n</font><b>Ready to start? Touch \u201CNext\u201D</b>.
         \n<font height="3">\n</font>To leave your phone unprotected, touch \u201CCancel\u201D.</font>
-    </string>    
-        
+    </string>
+
     <!-- ChooseLockPatternExample --> <skip />
     <!-- ChooseLockPatternExample, screen title that shows an example pattern -->
     <string name="lock_example_title">Example pattern</string>
@@ -1463,7 +1579,7 @@
     <!-- Text for filter option in ManageApps screen to display all installed
     applications -->
     <string name="filter_apps_all">All</string>
-    <!-- Text for filter option in ManageApps screen to display third party 
+    <!-- Text for filter option in ManageApps screen to display third party
     applications only -->
     <string name="filter_apps_third_party">Downloaded</string>
     <!-- Text for filter option in ManageApps screen to display list of running
@@ -1533,7 +1649,7 @@
     <string name="service_foreground_processes">Other: <xliff:g id="memory">%2$s</xliff:g> in <xliff:g id="count">%1$d</xliff:g></string>
     <!-- Text to label a process entry with the process name. -->
     <string name="service_process_name">Process: <xliff:g id="process">%1$s</xliff:g></string>
-    
+
     <!-- Language Settings --> <skip />
     <!-- Title of setting on main settings screen.  This item will take the user to the screen to tweak settings realted to locale and text -->
     <string name="language_settings">Language &amp; keyboard</string>
@@ -1546,9 +1662,9 @@
     <!-- On Text & language settings screen, heading. Inside the "Locale & text" screen, this is the header for settings that relate to text (autotext, autoreplace, autocapitalization). -->
     <string name="text_category">Text settings</string>
     <!-- On Text & language settings screen, setting option name. title of the setting to take the user to a screen to select the locale. -->
-    <string name="phone_language">Select locale</string>
+    <string name="phone_language">Select language</string>
     <!-- On Text & language settings screen, setting option name. summary of the setting to take the user to a screen to select the locale. -->
-    <string name="phone_language_summary">Select language and region</string>
+    <string name="phone_language_summary">""</string>
     <!-- On Text & language settings screen, setting option name. title of the setting to enable autoreplace of entered text. auto replace is a feature that will automatically correct mistyped words. -->
     <string name="auto_replace">Auto-replace</string>
     <!-- On Text & language settings screen, setting summary.  This is the summary for the "Auto-replace" setting. -->
@@ -1574,14 +1690,14 @@
     card numbers.  It comes from the application
     <xliff:g id="ime_application_name">%1$s</xliff:g>.
     Use this input method?</string>
-    
+
     <!-- User dictionary settings --><skip />
     <!-- User dictionary settings, The titlebar text of the User dictionary settings screen. -->
     <string name="user_dict_settings_titlebar">User dictionary</string>
     <!-- User dictionary settings, The title of the list item to go into the User dictionary settings screen. -->
     <string name="user_dict_settings_title">User dictionary</string>
     <!-- User dictionary settings.  The summary of the listem item to go into the User dictionary settings screen. -->
-    <string name="user_dict_settings_summary">Add &amp; remove words from user dictionary</string>
+    <string name="user_dict_settings_summary">""</string>
     <!-- User dictionary settings. The title of the menu item to add a new word to the user dictionary. -->
     <string name="user_dict_settings_add_menu_title">Add</string>
     <!-- User dictionary settings. The title of the dialog to add a new word to the user dictionary. -->
@@ -1666,7 +1782,7 @@
          (or other screens that can host gadgets).  Note to translators: we're still determining
          the final name for Gadgets/Widgets, so please translate both for now. -->
     <string name="gadget_picker_title">Choose gadget</string>
-    
+
     <!-- Title for the screen that lets the user choose a widget to add to the home screen
          (or other screens that can host widgets).  Note to translators: we're still determining
          the final name for Gadgets/Widgets, so please translate both for now. -->
@@ -1719,52 +1835,52 @@
 
     <!-- Used to head a list of packages that share a given user id BatteryHistory -->
     <string name="battery_history_packages_sharing_this_uid">Packages sharing this UID:</string>
-    
+
     <!-- Used when no battery data available in BatteryHistory -->
     <string name="battery_history_no_data">No battery usage data available</string>
-        
+
     <!-- Used for Sensor detail screen in BatteryHistory -->
     <string name="battery_history_sensor">Sensor:</string>
-    
+
     <!-- Used for Wakelock detail screen in BatteryHistory -->
     <string name="battery_history_wakelock">Partial Wakelock:</string>
-    
+
     <!-- Used for Sensor detail screen in BatteryHistory -->
     <string name="battery_history_used_by_packages">Sensor used by packages:</string>
-    
+
     <!-- Used for Sensor detail screen in BatteryHistory -->
     <string name="battery_history_sensor_usage">Used <xliff:g id="count">%1$d</xliff:g> times by <xliff:g id="package">%2$s</xliff:g></string>
-    
+
     <!-- Used for Sensor detail screen in BatteryHistory -->
     <string name="battery_history_sensor_usage_multi">Used <xliff:g id="count">%1$d</xliff:g> times by one of:</string>
-    
+
     <!-- Used for label of awake bar in BatteryHistory -->
     <string name="battery_history_awake_label">Running</string>
-    
+
     <!-- Used for label of screen on bar in BatteryHistory -->
     <string name="battery_history_screen_on_label">Screen on</string>
-    
+
     <!-- Used for label of phone on bar in BatteryHistory -->
     <string name="battery_history_phone_on_label">Phone on</string>
-    
+
     <!-- Used for awake time message in BatteryHistory -->
     <string name="battery_history_awake">Time spent without sleeping:</string>
-    
+
     <!-- Used for Screen on time message in BatteryHistory -->
     <string name="battery_history_screen_on">Time spent with screen on:</string>
-    
+
     <!-- Used for Phone on time message in BatteryHistory -->
     <string name="battery_history_phone_on">Time spent with phone on:</string>
-    
+
     <!-- Used for Screen on time message in BatteryHistory -->
     <string name="battery_history_screen_on_battery">On battery:</string>
-    
+
     <!-- XXX remove? Used for Screen on time message in BatteryHistory -->
     <string name="battery_history_screen_on_plugged">Plugged in:</string>
 
     <!-- XXX remove? Strings used for displaying usage statistics -->
     <string name="usage_stats_label">Usage statistics</string>
-    
+
     <!-- In the Testing screen. The item title of the activity that shows usage statistics.  -->
     <string name="testing_usage_stats">Usage statistics</string>
     <!-- label for text to indicate sort options -->
@@ -1800,6 +1916,16 @@
     <!-- Warning about disabling accessibility displayed as a dialog message when the user
          selects to disable accessibility. This avoids accidental disabling. -->
     <string name="accessibility_service_disable_warning">Disable accessibility?</string>
+    <!-- Title for the prompt that lets users know that they have no accessibility related apps
+         installed and that they can install TalkBack from Market. -->
+    <string name="accessibility_service_no_apps_title">No accessibility related applications found
+        </string>
+    <!-- Message for the prompt that lets users know that they have no accessibility related apps
+         installed and that they can install TalkBack from Market. -->
+    <string name="accessibility_service_no_apps_message">You do not have any accessibility related
+        applications installed.\n\nYou can download a screen reader for your device from Android
+        Market.\n\nClick "OK" to install the screen reader.</string>
+
 
     <!-- App Fuel Gauge strings -->
     <skip/>
@@ -1932,19 +2058,33 @@
     <!-- Label for mediaserver process -->
     <string name="process_mediaserver_label">Mediaserver</string>
 
+    <!-- Voice input/output settings --><skip />
+    <!-- Title of setting on main settings screen. This item will take the user to the screen to tweak settings related to speech functionality -->
+    <string name="voice_input_output_settings">Voice input &amp; output</string>
+    <!-- Main voice input/output settings screen title -->
+    <string name="voice_input_output_settings_title">Voice input &amp; output settings</string>
+    <!-- Title of voice search settings list item within voice input/output settings -->
+    <string name="voice_search_settings_title">Voice search</string>
+    <!-- Title of keyboard settings list item within voice input/output settings -->
+    <string name="keyboard_settings_title">Android keyboard</string>
+    
     <!-- Text-To-Speech (TTS) settings --><skip />
     <!-- Title of setting on main settings screen.  This item will take the user to the screen to tweak settings related to the text-to-speech functionality -->
     <string name="tts_settings">Text-to-speech</string>
     <!-- Summary of setting on main settings screen. This item will take the user to the screen to tweak settings related to the text-to-speech functionality  -->
     <string name="tts_settings_summary">Set text-to-speech options</string>
     <!-- Main TTS Settings screen title -->
-    <string name="tts_settings_title">Text-to-speech settings</string>
+    <string name="tts_settings_title">Text-to-speech</string>
     <!-- On main TTS Settings screen, title for toggle used to force use of default TTS settings -->
     <string name="use_default_tts_settings_title">Always use my settings</string>
     <!-- On main TTS Settings screen, summary for toggle used to force use of default TTS settings -->
     <string name="use_default_tts_settings_summary">Default settings below override application settings</string>
     <!-- On main TTS Settings screen, section header for default TTS settings -->
     <string name="tts_default_settings_section">Default settings</string>
+    <!-- On main TTS Settings screen, in default settings section, setting default synthesis engine for synthesized voice -->
+    <string name="tts_default_synth_title">Default Engine</string>
+    <!-- On main TTS Settings screen, summary for default synthesis engine for synthesized voice -->
+    <string name="tts_default_synth_summary">Sets the speech synthesis engine to be used for spoken text</string>
     <!-- On main TTS Settings screen, in default settings section, setting default speech rate for synthesized voice -->
     <string name="tts_default_rate_title">Speech rate</string>
     <!-- On main TTS Settings screen, summary for default speech rate for synthesized voice -->
@@ -1977,9 +2117,6 @@
     <string name="gadget_toggle_wifi">Updating Wi-Fi setting</string>
     <string name="gadget_toggle_bluetooth">Updating Bluetooth setting</string>
 
-    <!-- credential installer title -->
-    <string name="credential_installer_activity_title">Credential installer</string>
-
     <string name="vpn_settings_activity_title">VPN settings</string>
 
     <!-- Title of VPN connect dialog -->
@@ -2162,11 +2299,32 @@
     <!-- toast message -->
     <string name="credentials_disabled">Credential storage is disabled.</string>
 
+    <!-- Title of preference group for encrypted filesystem settings -->
+    <string name="encrypted_fs_category">Encrypted File System</string>
+    <!-- Title of preference to enable/dislable encrypted filesystem -->
+    <string name="encrypted_fs_enable">Encrypt private user data</string>
+    <!-- Summary of preference to enable/dislable encrypted filesystem -->
+    <string name="encrypted_fs_enable_summary">Enable encrypted file system storage for private user data in this device</string>
+    <!-- Dialog message to enable encrypted filesystem -->
+    <string name="encrypted_fs_enable_dialog">Enabling Encrypted File Systems requires a device data wipe.</string>
+    <!-- Dialog message to disable encrypted filesystem -->
+    <string name="encrypted_fs_disable_dialog">Disabling Encrypted File Systems requires a device data wipe.</string>
+    <!-- Button label to enable encrypted filesystem -->
+    <string name="encrypted_fs_enable_button">Enable</string>
+    <!-- Button label to disable encrypted filesystem -->
+    <string name="encrypted_fs_disable_button">Disable</string>
+    <!-- Button message to cancel toggling encrypted filesystem -->
+    <string name="encrypted_fs_cancel_button">Cancel</string>
+    <!-- Toast message to notify cancel toggling encrypted filesystem -->
+    <string name="encrypted_fs_cancel_confirm">Encrypted File Systems mode change cancelled.</string>
+    <!-- Dialog title to toggle encrypted filesystem -->
+    <string name="encrypted_fs_alert_dialog_title">Encrypted File Systems Warning.</string>
+
     <!-- Sound settings screen, setting check box label -->
     <string name="emergency_tone_title">Emergency tone</string>
     <!-- Sound settings screen, setting option summary text -->
     <string name="emergency_tone_summary">Set behavior when an emergency call is placed</string>
-    
+
     <!-- Privacy Settings screen --><skip/>
     <!-- Privacy settings menu title -->
     <string name="privacy_settings">Privacy</string>
@@ -2185,6 +2343,27 @@
     <!-- Dialog title for confirmation to erase backup data from server -->
     <string name="backup_erase_dialog_message">Are you sure you want to stop backing up your settings and erase all copies on Google servers?</string>
 
+    <!-- Device admin settings screen --><skip/>
+    <!-- Device admin settings activity title -->
+    <string name="device_admin_settings_title">Device administration settings</string>
+    <!-- Label for screen showing the active device policy -->
+    <string name="active_device_admin_msg">Active device administrator</string>
+    <!-- Label for button to remove the active device admin -->
+    <string name="remove_device_admin">Deactivate</string>
+    <!-- Label for screen showing to select device policy -->
+    <string name="select_device_admin_msg">Select device administrator</string>
+
+    <!-- Label for screen showing to add device policy -->
+    <string name="add_device_admin_msg">Activate device administrator</string>
+    <!-- Label for button to set the active device admin -->
+    <string name="add_device_admin">Activate</string>
+    <!-- Device admin add activity title -->
+    <string name="device_admin_add_title">Activate device administrator</string>
+    <!-- Device admin warning message about policies an admin can use -->
+    <string name="device_admin_warning">Activating this administrator will allow
+        the application <xliff:g id="app_name">%1$s</xliff:g> to perform the
+        following operations:</string>
+    
     <!-- Name to assign to a Network Access Point that was saved without a name -->
     <string name="untitled_apn">Untitled</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 33e43bb..a1422e1 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -44,8 +44,8 @@
         <item name="android:paddingTop">10dip</item>
         <item name="android:paddingRight">10dip</item>
         <item name="android:paddingBottom">10dip</item>
-        <item name="android:layout_width">fill_parent</item>
-        <item name="android:layout_height">fill_parent</item>
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">match_parent</item>
     </style>
 
     <style name="entry_layout">
@@ -56,7 +56,7 @@
     
     <style name="form_value">
         <item name="android:layout_height">wrap_content</item>
-        <item name="android:layout_width">fill_parent</item>
+        <item name="android:layout_width">match_parent</item>
     </style>
 
 
@@ -78,4 +78,8 @@
         <item name="android:textStyle">normal</item>
     </style>
 
+    <style name="TallTitleBarTheme" parent="android:Theme.NoTitleBar">
+        <item name="android:windowContentOverlay">@null</item>
+    </style>
+    
 </resources>
diff --git a/res/xml-ar/timezones.xml b/res/xml-ar/timezones.xml
index b903880..d8ee857 100644
--- a/res/xml-ar/timezones.xml
+++ b/res/xml-ar/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">ماناوس</timezone>
     <timezone id="America/Santiago">سانتيجو</timezone>
     <timezone id="America/St_Johns">سانت جونس</timezone>
-    <timezone id="America/Araguaina">أروجوانيا</timezone>
+    <timezone id="America/Sao_Paulo">ساو باولو</timezone>
     <timezone id="America/Argentina/Buenos_Aires">بوينوس أيرس</timezone>
     <timezone id="America/Godthab">جودثاب</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-cs/timezones.xml b/res/xml-cs/timezones.xml
index 3b7e87b..b7f0172 100644
--- a/res/xml-cs/timezones.xml
+++ b/res/xml-cs/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Manaus</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">Newfoundlandský standardní čas (St. Johns)</timezone>
-    <timezone id="America/Araguaina">Araguaina</timezone>
+    <timezone id="America/Sao_Paulo">Sao Paulo</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
     <timezone id="America/Godthab">Godthab</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-da/timezones.xml b/res/xml-da/timezones.xml
index 6e80e87..07efc21 100644
--- a/res/xml-da/timezones.xml
+++ b/res/xml-da/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Amazonas-tid (Manaus)</timezone>
     <timezone id="America/Santiago">Chilensk tid (Santiago)</timezone>
     <timezone id="America/St_Johns">Newfoundland-tid (St. Johns)</timezone>
-    <timezone id="America/Araguaina">Brasiliansk tid (Araguaina)</timezone>
+    <timezone id="America/Sao_Paulo">Brasiliansk tid (Sao Paulo)</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Argentinsk tid (Buenos Aires)</timezone>
     <timezone id="America/Godthab">Vestgrønlandsk tid (Nuuk)</timezone>
     <timezone id="America/Montevideo">Uruguayansk tid (Montevideo)</timezone>
diff --git a/res/xml-de/timezones.xml b/res/xml-de/timezones.xml
index 50c6a85..6c14a27 100644
--- a/res/xml-de/timezones.xml
+++ b/res/xml-de/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Manaus</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">St. John's</timezone>
-    <timezone id="America/Araguaina">Araguaina</timezone>
+    <timezone id="America/Sao_Paulo">Sao Paulo</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
     <timezone id="America/Godthab">Godthab</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-el/timezones.xml b/res/xml-el/timezones.xml
index de25148..f1c6720 100644
--- a/res/xml-el/timezones.xml
+++ b/res/xml-el/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Μανάος</timezone>
     <timezone id="America/Santiago">Σαντιάγκο</timezone>
     <timezone id="America/St_Johns">Σεντ Τζονς</timezone>
-    <timezone id="America/Araguaina">Αραγκουάινα</timezone>
+    <timezone id="America/Sao_Paulo">Σάο Πάολο</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Μπουένος Άιρες</timezone>
     <timezone id="America/Godthab">Γκόνθαμπ</timezone>
     <timezone id="America/Montevideo">Μοντεβίδεο</timezone>
diff --git a/res/xml-es/timezones.xml b/res/xml-es/timezones.xml
index 4fe564d..31caea5 100644
--- a/res/xml-es/timezones.xml
+++ b/res/xml-es/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Hora del Amazonas (Manaus)</timezone>
     <timezone id="America/Santiago">Hora de Chile (Santiago)</timezone>
     <timezone id="America/St_Johns">Hora estándar de Newfoundland (St. John’s)</timezone>
-    <timezone id="America/Araguaina">Hora de Brasilia (Araguaína)</timezone>
+    <timezone id="America/Sao_Paulo">Hora de Brasilia (São Paulo)</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Hora de Argentina (Hora de Argentina (Buenos Aires))</timezone>
     <timezone id="America/Godthab">Hora de Groenlandia occidental (Godthab)</timezone>
     <timezone id="America/Montevideo">Hora de Uruguay (Montevideo)</timezone>
diff --git a/res/xml-fi/timezones.xml b/res/xml-fi/timezones.xml
index ae194a7..29d8b25 100644
--- a/res/xml-fi/timezones.xml
+++ b/res/xml-fi/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Manaus</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">Newfoundlandin normaaliaika (St. Johns)</timezone>
-    <timezone id="America/Araguaina">Araguaina</timezone>
+    <timezone id="America/Sao_Paulo">São Paulo</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
     <timezone id="America/Godthab">Godthåb</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-fr/timezones.xml b/res/xml-fr/timezones.xml
index d655e89..b066c0b 100644
--- a/res/xml-fr/timezones.xml
+++ b/res/xml-fr/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Heure de l’Amazonie (Manaos)</timezone>
     <timezone id="America/Santiago">Heure du Chili (Santiago)</timezone>
     <timezone id="America/St_Johns">Heure de Terre-Neuve (Saint-Jean de Terre-Neuve)</timezone>
-    <timezone id="America/Araguaina">Heure de Brasilia (Araguaína)</timezone>
+    <timezone id="America/Sao_Paulo">Heure de Brasilia (São Paulo)</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Heure de l’Est argentin (Buenos Aires)</timezone>
     <timezone id="America/Godthab">Heure de l’Ouest du Groenland (Godthåb)</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-he/timezones.xml b/res/xml-he/timezones.xml
index 9a2d9f3..4174880 100644
--- a/res/xml-he/timezones.xml
+++ b/res/xml-he/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">מנאוס</timezone>
     <timezone id="America/Santiago">אמריקה/סנטיאגו</timezone>
     <timezone id="America/St_Johns">St. John's</timezone>
-    <timezone id="America/Araguaina">אראגואינה</timezone>
+    <timezone id="America/Sao_Paulo">אמריקה/סאן-פאולו</timezone>
     <timezone id="America/Argentina/Buenos_Aires">בואנוס איירס</timezone>
     <timezone id="America/Godthab">גודת'אב</timezone>
     <timezone id="America/Montevideo">מונטווידאו</timezone>
diff --git a/res/xml-hr/timezones.xml b/res/xml-hr/timezones.xml
index 9a44c47..072002d 100644
--- a/res/xml-hr/timezones.xml
+++ b/res/xml-hr/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Manaus</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">St. John's</timezone>
-    <timezone id="America/Araguaina">Araguaina</timezone>
+    <timezone id="America/Sao_Paulo">Sao Paulo</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
     <timezone id="America/Godthab">Godthab</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-hu/timezones.xml b/res/xml-hu/timezones.xml
index 7266860..fc54cde 100644
--- a/res/xml-hu/timezones.xml
+++ b/res/xml-hu/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Amazóniai idő (Manaus)</timezone>
     <timezone id="America/Santiago">Chilei idő (Santiago)</timezone>
     <timezone id="America/St_Johns">Új-fundlandi idő (St. John's)</timezone>
-    <timezone id="America/Araguaina">Brazíliai idő (Araguaína)</timezone>
+    <timezone id="America/Sao_Paulo">Brazíliai idő (Sao Paulo)</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Argentína idő (Buenos Aires)</timezone>
     <timezone id="America/Godthab">Nyugat-grönlandi idő (Godthåb)</timezone>
     <timezone id="America/Montevideo">Uruguayi idő (Montevideo)</timezone>
diff --git a/res/xml-id/timezones.xml b/res/xml-id/timezones.xml
index ee625b0..23821a6 100644
--- a/res/xml-id/timezones.xml
+++ b/res/xml-id/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Manaus</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">St. John's</timezone>
-    <timezone id="America/Araguaina">Araguaina</timezone>
+    <timezone id="America/Sao_Paulo">Sao Paulo</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
     <timezone id="America/Godthab">Godthab</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-it/timezones.xml b/res/xml-it/timezones.xml
index beefbf6..ea7300c 100644
--- a/res/xml-it/timezones.xml
+++ b/res/xml-it/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Manaus</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">St. Johns</timezone>
-    <timezone id="America/Araguaina">Araguaina</timezone>
+    <timezone id="America/Sao_Paulo">San Paolo</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
     <timezone id="America/Godthab">Godthab</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-ja/timezones.xml b/res/xml-ja/timezones.xml
index 168ba04..c139009 100644
--- a/res/xml-ja/timezones.xml
+++ b/res/xml-ja/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">アマゾン時間 (マナウス)</timezone>
     <timezone id="America/Santiago">アメリカ/サンチアゴ</timezone>
     <timezone id="America/St_Johns">ニューファンドランド島標準時 (セントジョンズ)</timezone>
-    <timezone id="America/Araguaina">ブラジリア時間 (アラグァイナ)</timezone>
+    <timezone id="America/Sao_Paulo">ブラジリア時間 (サンパウロ)</timezone>
     <timezone id="America/Argentina/Buenos_Aires">アルゼンチン時間 (ブエノスアイレス)</timezone>
     <timezone id="America/Godthab">アメリカ/ゴッドホープ</timezone>
     <timezone id="America/Montevideo">モンテビデオ</timezone>
diff --git a/res/xml-ko/timezones.xml b/res/xml-ko/timezones.xml
index 711f732..aed7bd9 100644
--- a/res/xml-ko/timezones.xml
+++ b/res/xml-ko/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">아마존 표준시 (마나우스)</timezone>
     <timezone id="America/Santiago">산티아고</timezone>
     <timezone id="America/St_Johns">뉴펀들랜드 표준시 (세인트존)</timezone>
-    <timezone id="America/Araguaina">브라질리아 표준시 (아라과이나)</timezone>
+    <timezone id="America/Sao_Paulo">브라질리아 표준시 (상파울로)</timezone>
     <timezone id="America/Argentina/Buenos_Aires">부에노스 아이레스</timezone>
     <timezone id="America/Godthab">고드호프</timezone>
     <timezone id="America/Montevideo">몬테비데오</timezone>
diff --git a/res/xml-nb/timezones.xml b/res/xml-nb/timezones.xml
index f374a34..a20b417 100644
--- a/res/xml-nb/timezones.xml
+++ b/res/xml-nb/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Amazonas-tid (Manaus)</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">St. John's</timezone>
-    <timezone id="America/Araguaina">Brasilia-tid (Araguaína)</timezone>
+    <timezone id="America/Sao_Paulo">Brasilia-tid (São Paulo)</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
     <timezone id="America/Godthab">Godthåb</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-nl/timezones.xml b/res/xml-nl/timezones.xml
index ee2453e..ecb107e 100644
--- a/res/xml-nl/timezones.xml
+++ b/res/xml-nl/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Manaus</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">Newfoundland-standaardtijd (St. Johns)</timezone>
-    <timezone id="America/Araguaina">Araguaina</timezone>
+    <timezone id="America/Sao_Paulo">São Paulo</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
     <timezone id="America/Godthab">Godthab</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-pl/timezones.xml b/res/xml-pl/timezones.xml
index ea0d72d..998aa75 100644
--- a/res/xml-pl/timezones.xml
+++ b/res/xml-pl/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Manaus</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">St. John's</timezone>
-    <timezone id="America/Araguaina">Araguaina</timezone>
+    <timezone id="America/Sao_Paulo">Săo Paulo</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
     <timezone id="America/Godthab">Grenlandia</timezone>
     <timezone id="America/Montevideo">Urugwaj</timezone>
diff --git a/res/xml-pt/timezones.xml b/res/xml-pt/timezones.xml
index 176d214..83a9a2b 100644
--- a/res/xml-pt/timezones.xml
+++ b/res/xml-pt/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Horário do Amazonas (Manaus)</timezone>
     <timezone id="America/Santiago">Horário do Chile (Santiago)</timezone>
     <timezone id="America/St_Johns">Horário de Terra Nova (St. Johns)</timezone>
-    <timezone id="America/Araguaina">Horário de Brasília (Araguaína)</timezone>
+    <timezone id="America/Sao_Paulo">Horário de Brasília (São Paulo)</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Horário da Argentina (Buenos Aires)</timezone>
     <timezone id="America/Godthab">Horário da Groenlândia Ocidental (Godthab)</timezone>
     <timezone id="America/Montevideo">Horário do Uruguai (Montevidéu)</timezone>
diff --git a/res/xml-ro/timezones.xml b/res/xml-ro/timezones.xml
index c87d0e0..371ba75 100644
--- a/res/xml-ro/timezones.xml
+++ b/res/xml-ro/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Ora Amazon (Manaus)</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">St. John's</timezone>
-    <timezone id="America/Araguaina">Araguaina</timezone>
+    <timezone id="America/Sao_Paulo">Sao Paulo</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Ora Argentinei (Buenos Aires)</timezone>
     <timezone id="America/Godthab">Godthab</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-ru/timezones.xml b/res/xml-ru/timezones.xml
index e21095f..1564a6a 100644
--- a/res/xml-ru/timezones.xml
+++ b/res/xml-ru/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Манаус</timezone>
     <timezone id="America/Santiago">Сантьяго</timezone>
     <timezone id="America/St_Johns">Сент-Джонс</timezone>
-    <timezone id="America/Araguaina">Арагуаина</timezone>
+    <timezone id="America/Sao_Paulo">Сан-Паулу</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Буэнос-Айрес</timezone>
     <timezone id="America/Godthab">Готхоб</timezone>
     <timezone id="America/Montevideo">Монтевидео</timezone>
diff --git a/res/xml-sk/timezones.xml b/res/xml-sk/timezones.xml
index 2f4254c..bfac2f1 100644
--- a/res/xml-sk/timezones.xml
+++ b/res/xml-sk/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Manaus</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">St. John's</timezone>
-    <timezone id="America/Araguaina">Araguaina</timezone>
+    <timezone id="America/Sao_Paulo">Sao Paulo</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
     <timezone id="America/Godthab">Godthab</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-sr/timezones.xml b/res/xml-sr/timezones.xml
index 51caf08..c966e98 100644
--- a/res/xml-sr/timezones.xml
+++ b/res/xml-sr/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Амазон време (Манаус)</timezone>
     <timezone id="America/Santiago">Чиле време (Сантијаго)</timezone>
     <timezone id="America/St_Johns">Њуфаундленд време (Св. Џон)</timezone>
-    <timezone id="America/Araguaina">Бразилија време (Арагвајана)</timezone>
+    <timezone id="America/Sao_Paulo">Бразилија време (Сао Паоло)</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Аргентина време (Буенос Аирес)</timezone>
     <timezone id="America/Godthab">Западни Гренланд време (Нук)</timezone>
     <timezone id="America/Montevideo">Уругвај време (Монтевидео)</timezone>
diff --git a/res/xml-sv/timezones.xml b/res/xml-sv/timezones.xml
index ecf9921..2381e2a 100644
--- a/res/xml-sv/timezones.xml
+++ b/res/xml-sv/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Amazonastid (Manaus)</timezone>
     <timezone id="America/Santiago">Chilensk tid (Santiago)</timezone>
     <timezone id="America/St_Johns">Newfoundland, normaltid (St. Johns)</timezone>
-    <timezone id="America/Araguaina">Brasiliansk tid (Araguaina)</timezone>
+    <timezone id="America/Sao_Paulo">Brasiliansk tid (São Paulo)</timezone>
     <timezone id="America/Argentina/Buenos_Aires">östargentinsk tid (Buenos Aires)</timezone>
     <timezone id="America/Godthab">Godthåb</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml-th/timezones.xml b/res/xml-th/timezones.xml
index f2fdabc..05f3793 100644
--- a/res/xml-th/timezones.xml
+++ b/res/xml-th/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">มาเนาส์</timezone>
     <timezone id="America/Santiago">ซันติอาโก</timezone>
     <timezone id="America/St_Johns">เซนต์จอนส์</timezone>
-    <timezone id="America/Araguaina">อารากัวนา</timezone>
+    <timezone id="America/Sao_Paulo">เซาเปาลู</timezone>
     <timezone id="America/Argentina/Buenos_Aires">บัวโนสไอเรส</timezone>
     <timezone id="America/Godthab">กอดแธบ</timezone>
     <timezone id="America/Montevideo">มอนเตวิเดโอ</timezone>
diff --git a/res/xml-tr/timezones.xml b/res/xml-tr/timezones.xml
index 18a341e..0184606 100644
--- a/res/xml-tr/timezones.xml
+++ b/res/xml-tr/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Amazon Saati (Manaus)</timezone>
     <timezone id="America/Santiago">Şili Saati (Santiago)</timezone>
     <timezone id="America/St_Johns">Newfoundland Saati (St. John's)</timezone>
-    <timezone id="America/Araguaina">Brasilia Saati (Araguaina)</timezone>
+    <timezone id="America/Sao_Paulo">Brasilia Saati (Sao Paulo)</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Arjantin Saati (Buenos Aires)</timezone>
     <timezone id="America/Godthab">Batı Grönland Saati (Godthab)</timezone>
     <timezone id="America/Montevideo">Uruguay Saati (Montevideo)</timezone>
diff --git a/res/xml-uk/timezones.xml b/res/xml-uk/timezones.xml
index 2337570..2658f31 100644
--- a/res/xml-uk/timezones.xml
+++ b/res/xml-uk/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Манаус</timezone>
     <timezone id="America/Santiago">Сантьяго</timezone>
     <timezone id="America/St_Johns">Сент-Джонс</timezone>
-    <timezone id="America/Araguaina">Арагуайна</timezone>
+    <timezone id="America/Sao_Paulo">Сан-Паулу</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Буенос-Айрес</timezone>
     <timezone id="America/Godthab">Готхоб</timezone>
     <timezone id="America/Montevideo">Монтевідео</timezone>
diff --git a/res/xml-zh-rTW/timezones.xml b/res/xml-zh-rTW/timezones.xml
new file mode 100644
index 0000000..f9a2fb9
--- /dev/null
+++ b/res/xml-zh-rTW/timezones.xml
@@ -0,0 +1,85 @@
+<timezones>
+    <timezone id="Pacific/Majuro">馬朱諾</timezone>
+    <timezone id="Pacific/Midway">中途島</timezone>
+    <timezone id="Pacific/Honolulu">檀香山</timezone>
+    <timezone id="America/Anchorage">安克里治</timezone>
+    <timezone id="America/Los_Angeles">太平洋時間 (洛杉磯)</timezone>
+    <timezone id="America/Tijuana">太平洋時間 (提華納)</timezone>
+    <timezone id="America/Phoenix">山區時間 (鳳凰城)</timezone>
+    <timezone id="America/Chihuahua">奇華華</timezone>
+    <timezone id="America/Denver">山區時間 (丹佛)</timezone>
+    <timezone id="America/Costa_Rica">中部時間 (哥斯大黎加)</timezone>
+    <timezone id="America/Chicago">中部時間 (芝加哥)</timezone>
+    <timezone id="America/Mexico_City">中部時間 (墨西哥市)</timezone>
+    <timezone id="America/Regina">中部時間 (利宅那)</timezone>
+    <timezone id="America/Bogota">哥伦比亚时间 (哥倫比亞)</timezone>
+    <timezone id="America/New_York">東部時間 (紐約)</timezone>
+    <timezone id="America/Caracas">委内瑞拉时间 (卡拉卡斯)</timezone>
+    <timezone id="America/Barbados">大西洋時間 (巴貝多)</timezone>
+    <timezone id="America/Manaus">亚马逊时间 (瑪瑙斯)</timezone>
+    <timezone id="America/Santiago">聖地牙哥</timezone>
+    <timezone id="America/St_Johns">纽芬兰标准时间 (聖約翰)</timezone>
+    <timezone id="America/Sao_Paulo">聖保羅</timezone>
+    <timezone id="America/Argentina/Buenos_Aires">阿根廷時間 (布宜諾斯艾利斯)</timezone>
+    <timezone id="America/Godthab">高特哈市</timezone>
+    <timezone id="America/Montevideo">乌拉圭时间 (烏拉圭)</timezone>
+    <timezone id="Atlantic/South_Georgia">南喬治亞與南三明治島</timezone>
+    <timezone id="Atlantic/Azores">亞速爾群島</timezone>
+    <timezone id="Atlantic/Cape_Verde">維德角</timezone>
+    <timezone id="Africa/Casablanca">卡薩布蘭卡</timezone>
+    <timezone id="Europe/London">格林尼治标准时间 (倫敦)</timezone>
+    <timezone id="Europe/Amsterdam">中欧标准时间 (荷蘭)</timezone>
+    <timezone id="Europe/Belgrade">中欧标准时间 (塞爾維亞)</timezone>
+    <timezone id="Europe/Brussels">中欧标准时间 (布魯塞爾)</timezone>
+    <timezone id="Europe/Sarajevo">中欧标准时间 (沙拉耶佛)</timezone>
+    <timezone id="Africa/Windhoek">溫荷克</timezone>
+    <timezone id="Africa/Brazzaville">西部非洲时间 (剛果共和國)</timezone>
+    <timezone id="Asia/Amman">东欧标准时间 (約旦)</timezone>
+    <timezone id="Europe/Athens">东欧标准时间 (希臘)</timezone>
+    <timezone id="Asia/Beirut">东欧标准时间 (貝鲁特特)</timezone>
+    <timezone id="Africa/Cairo">东欧标准时间 (埃及)</timezone>
+    <timezone id="Europe/Helsinki">东欧标准时间 (芬蘭)</timezone>
+    <timezone id="Asia/Jerusalem">以色列标准时间 (耶路撒冷)</timezone>
+    <timezone id="Europe/Minsk">白俄羅斯</timezone>
+    <timezone id="Africa/Harare">非洲中部时间 (辛巴威)</timezone>
+    <timezone id="Asia/Baghdad">阿拉伯時間 (伊拉克)</timezone>
+    <timezone id="Europe/Moscow">莫斯科</timezone>
+    <timezone id="Asia/Kuwait">阿拉伯時間 (科威特)</timezone>
+    <timezone id="Africa/Nairobi">非洲东部时间 (奈洛比)</timezone>
+    <timezone id="Asia/Tehran">伊朗标准时间 (伊朗)</timezone>
+    <timezone id="Asia/Baku">亞塞拜然</timezone>
+    <timezone id="Asia/Tbilisi">喬治亞</timezone>
+    <timezone id="Asia/Yerevan">亞美尼亞</timezone>
+    <timezone id="Asia/Dubai">GT (杜拜)</timezone>
+    <timezone id="Asia/Kabul">阿富汗时间 (阿富汗)</timezone>
+    <timezone id="Asia/Karachi">喀拉蚩</timezone>
+    <timezone id="Asia/Oral">奧拉爾</timezone>
+    <timezone id="Asia/Yekaterinburg">葉卡捷林堡</timezone>
+    <timezone id="Asia/Calcutta">印度</timezone>
+    <timezone id="Asia/Colombo">可倫坡</timezone>
+    <timezone id="Asia/Katmandu">尼泊尔时间 (尼泊爾)</timezone>
+    <timezone id="Asia/Almaty">阿拉木圖</timezone>
+    <timezone id="Asia/Rangoon">缅甸时间 (緬甸)</timezone>
+    <timezone id="Asia/Krasnoyarsk">克拉斯諾雅斯克</timezone>
+    <timezone id="Asia/Bangkok">泰國</timezone>
+    <timezone id="Asia/Shanghai">中国标准时间 (北京)</timezone>
+    <timezone id="Asia/Hong_Kong">香港时间 (中華人民共和國香港特別行政區)</timezone>
+    <timezone id="Asia/Irkutsk">伊尔库茨克时间 (伊爾庫次克)</timezone>
+    <timezone id="Asia/Kuala_Lumpur">吉隆坡</timezone>
+    <timezone id="Australia/Perth">伯斯</timezone>
+    <timezone id="Asia/Taipei">中国标准时间 (台灣)</timezone>
+    <timezone id="Asia/Seoul">首爾</timezone>
+    <timezone id="Asia/Tokyo">日本時間 (東京)</timezone>
+    <timezone id="Asia/Yakutsk">雅库茨克时间 (雅庫次克)</timezone>
+    <timezone id="Australia/Adelaide">阿得雷德</timezone>
+    <timezone id="Australia/Darwin">達爾文</timezone>
+    <timezone id="Australia/Brisbane">布利斯班</timezone>
+    <timezone id="Australia/Hobart">荷巴特</timezone>
+    <timezone id="Australia/Sydney">雪梨</timezone>
+    <timezone id="Asia/Vladivostok">海参崴时间 (海參崴)</timezone>
+    <timezone id="Pacific/Guam">關島</timezone>
+    <timezone id="Asia/Magadan">马加丹时间 (馬加丹)</timezone>
+    <timezone id="Pacific/Auckland">奧克蘭</timezone>
+    <timezone id="Pacific/Fiji">斐濟</timezone>
+    <timezone id="Pacific/Tongatapu">東加</timezone>
+</timezones>
diff --git a/res/xml-zh/timezones.xml b/res/xml-zh/timezones.xml
index 1129e7c..be269d1 100644
--- a/res/xml-zh/timezones.xml
+++ b/res/xml-zh/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">亚马逊标准时间 (马瑙斯)</timezone>
     <timezone id="America/Santiago">圣地亚哥</timezone>
     <timezone id="America/St_Johns">纽芬兰时间 (圣约翰)</timezone>
-    <timezone id="America/Araguaina">阿拉瓜伊纳</timezone>
+    <timezone id="America/Sao_Paulo">圣保罗</timezone>
     <timezone id="America/Argentina/Buenos_Aires">布宜诺斯艾利斯</timezone>
     <timezone id="America/Godthab">戈特霍布</timezone>
     <timezone id="America/Montevideo">乌拉圭时间 (蒙得维的亚)</timezone>
diff --git a/res/xml/device_info_memory.xml b/res/xml/device_info_memory.xml
index febd00f..785fded 100644
--- a/res/xml/device_info_memory.xml
+++ b/res/xml/device_info_memory.xml
@@ -25,7 +25,7 @@
             style="?android:attr/preferenceInformationStyle" 
             android:title="@string/memory_available"
             android:summary="00"/>
-        <Preference android:key="memory_sd_unmount"
+        <Preference android:key="memory_sd_mount_toggle"
             android:title="@string/sd_eject"
             android:summary="@string/sd_eject_summary"/>
         <Preference android:key="memory_sd_format"
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
new file mode 100644
index 0000000..5b73924
--- /dev/null
+++ b/res/xml/display_settings.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:title="@string/display_settings"
+        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+
+        <com.android.settings.BrightnessPreference
+                android:key="brightness"
+                android:title="@string/brightness"
+                android:dialogIcon="@drawable/ic_popup_brightness"
+                android:dialogTitle="@string/brightness" />
+
+        <CheckBoxPreference
+            android:key="accelerometer"
+            android:title="@string/accelerometer_title"/>
+
+        <ListPreference
+            android:key="animations"
+            android:title="@string/animations_title"
+            android:persistent="false"
+            android:entries="@array/animations_entries"
+            android:entryValues="@array/animations_values" />
+
+        <ListPreference
+                android:key="screen_timeout"
+                android:title="@string/screen_timeout"
+                android:summary="@string/screen_timeout_summary"
+                android:persistent="false"
+                android:entries="@array/screen_timeout_entries"
+                android:entryValues="@array/screen_timeout_values" />
+</PreferenceScreen>
diff --git a/res/xml/security_settings.xml b/res/xml/security_settings.xml
index 1b73584..d1f896a 100644
--- a/res/xml/security_settings.xml
+++ b/res/xml/security_settings.xml
@@ -4,9 +4,9 @@
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at
-  
+
           http://www.apache.org/licenses/LICENSE-2.0
-  
+
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -19,15 +19,15 @@
     <PreferenceCategory
         android:key="location_category"
         android:title="@string/location_title">
-        
-        <CheckBoxPreference 
-            android:key="location_network" 
+
+        <CheckBoxPreference
+            android:key="location_network"
             android:title="@string/location_network_based"
             android:summaryOn="@string/location_neighborhood_level"
             android:summaryOff="@string/location_networks_disabled"/>
-        
-        <CheckBoxPreference 
-            android:key="location_gps" 
+
+        <CheckBoxPreference
+            android:key="location_gps"
             android:title="@string/location_gps"
             android:summaryOn="@string/location_street_level"
             android:summaryOff="@string/location_gps_disabled"/>
@@ -42,5 +42,27 @@
 -->
 
     </PreferenceCategory>
-            
+
+    <PreferenceCategory
+        android:key="security_category"
+        android:title="@string/lock_settings_title">
+
+        <ListPreference
+            android:key="unlock_method"
+            android:title="@string/unlock_method_title"
+            android:summary="@string/unlock_method_summary"
+            android:persistent="false"
+            android:entries="@array/unlock_method_entries"
+            android:entryValues="@array/unlock_method_values"/>
+
+        <CheckBoxPreference
+            android:key="visiblepattern"
+            android:title="@string/lockpattern_settings_enable_visible_pattern_title"/>
+
+        <CheckBoxPreference
+            android:key="tactilefeedback"
+            android:title="@string/lockpattern_settings_enable_tactile_feedback_title"/>
+
+    </PreferenceCategory>
+
 </PreferenceScreen>
diff --git a/res/xml/settings.xml b/res/xml/settings.xml
index 22f2523..0f19442 100644
--- a/res/xml/settings.xml
+++ b/res/xml/settings.xml
@@ -39,15 +39,26 @@
                 android:targetClass="com.android.phone.CallFeaturesSetting" />
         </com.android.settings.IconPreferenceScreen>
 
-        <!-- Sound and Display -->
+        <!-- Sound -->
 
         <com.android.settings.IconPreferenceScreen
-            settings:icon="@drawable/ic_settings_sound_display"
-            android:title="@string/sound_and_display_settings">
+            settings:icon="@drawable/ic_settings_sound"
+            android:title="@string/sound_settings_title">
             <intent
                 android:action="android.intent.action.MAIN"
                 android:targetPackage="com.android.settings"
-                android:targetClass="com.android.settings.SoundAndDisplaySettings" />
+                android:targetClass="com.android.settings.SoundSettings" />
+        </com.android.settings.IconPreferenceScreen>
+
+        <!-- Display -->
+
+        <com.android.settings.IconPreferenceScreen
+            settings:icon="@drawable/ic_settings_display"
+            android:title="@string/display_settings_title">
+            <intent
+                android:action="android.intent.action.MAIN"
+                android:targetPackage="com.android.settings"
+                android:targetClass="com.android.settings.DisplaySettings" />
         </com.android.settings.IconPreferenceScreen>
 
         <!-- Security & Location -->
@@ -133,16 +144,15 @@
                 android:targetClass="com.android.settings.LanguageSettings" />
         </com.android.settings.IconPreferenceScreen>
 
-        <!-- Dock -->
+        <!-- Voice input & output -->
 
         <com.android.settings.IconPreferenceScreen
-            android:key="dock_settings"
-            settings:icon="@drawable/ic_settings_dock"
-            android:title="@string/dock_settings">
+            settings:icon="@drawable/ic_settings_speech"
+            android:title="@string/voice_input_output_settings">
             <intent
                 android:action="android.intent.action.MAIN"
                 android:targetPackage="com.android.settings"
-                android:targetClass="com.android.settings.DockSettings" />
+                android:targetClass="com.android.settings.VoiceInputOutputSettings" />
         </com.android.settings.IconPreferenceScreen>
 
         <!-- Accessibility feedback -->
@@ -156,15 +166,16 @@
                 android:targetClass="com.android.settings.AccessibilitySettings" />
         </com.android.settings.IconPreferenceScreen>
 
-        <!-- Text-To-Speech -->
+        <!-- Dock -->
 
         <com.android.settings.IconPreferenceScreen
-            settings:icon="@drawable/ic_settings_speech"
-            android:title="@string/tts_settings">
+            android:key="dock_settings"
+            settings:icon="@drawable/ic_settings_dock"
+            android:title="@string/dock_settings">
             <intent
                 android:action="android.intent.action.MAIN"
                 android:targetPackage="com.android.settings"
-                android:targetClass="com.android.settings.TextToSpeechSettings" />
+                android:targetClass="com.android.settings.DockSettings" />
         </com.android.settings.IconPreferenceScreen>
 
         <!-- Date & Time -->
diff --git a/res/xml/sound_and_display_settings.xml b/res/xml/sound_settings.xml
similarity index 66%
rename from res/xml/sound_and_display_settings.xml
rename to res/xml/sound_settings.xml
index 657a340..c8a8d97 100644
--- a/res/xml/sound_and_display_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -15,11 +15,10 @@
 -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:title="@string/sound_settings"
+        android:key="sound_settings"
         xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
 
-    <PreferenceCategory android:key="sound_settings"
-            android:title="@string/sound_settings">
-
         <CheckBoxPreference
                 android:key="silent"
                 android:title="@string/silent_mode_title"
@@ -30,23 +29,14 @@
 
         <com.android.settings.RingerVolumePreference
                 android:key="ring_volume"
-                android:title="@string/ring_volume_title"
+                android:title="@string/all_volume_title"
                 android:summary="@string/ring_volume_summary"
-                android:dialogTitle="@string/ring_volume_title"
+                android:dialogTitle="@string/all_volume_title"
                 android:persistent="false"
                 android:dependency="silent"
                 android:order="2"
                 android:streamType="ring" />
 
-        <VolumePreference
-                android:key="media_volume"
-                android:title="@string/media_volume_title"
-                android:summary="@string/media_volume_summary"
-                android:dialogTitle="@string/media_volume_title"
-                android:persistent="false"
-                android:order="3"
-                android:streamType="music" />
-
         <com.android.settings.DefaultRingtonePreference
                 android:key="ringtone"
                 android:title="@string/ringtone_title"
@@ -104,8 +94,7 @@
                 android:title="@string/haptic_feedback_enable_title"
                 android:summaryOn="@string/haptic_feedback_enable_summary_on"
                 android:summaryOff="@string/haptic_feedback_enable_summary_off"
-                android:dependency="silent"
-                 android:order="11"
+                android:order="11"
                 android:defaultValue="true" />
 
         <CheckBoxPreference
@@ -117,45 +106,11 @@
                 android:order="12"
                 android:defaultValue="true" />
 
-    </PreferenceCategory>
-
-    <ListPreference
-            android:key="emergency_tone"
-            android:title="@string/emergency_tone_title"
-            android:summary="@string/emergency_tone_summary"
-            android:entries="@array/emergency_tone_entries"
-            android:entryValues="@array/emergency_tone_values" />
-
-    <PreferenceCategory
-            android:title="@string/display_settings">
-
-        <CheckBoxPreference
-            android:key="accelerometer"
-            android:title="@string/accelerometer_title"
-            android:summaryOn="@string/accelerometer_summary_on"
-            android:summaryOff="@string/accelerometer_summary_off"/>
-
         <ListPreference
-            android:key="animations"
-            android:title="@string/animations_title"
-            android:persistent="false"
-            android:entries="@array/animations_entries"
-            android:entryValues="@array/animations_values" />
-
-        <com.android.settings.BrightnessPreference
-                android:key="brightness"
-                android:title="@string/brightness"
-                android:summary="@string/brightness_summary"
-                android:dialogIcon="@drawable/ic_popup_brightness"
-                android:dialogTitle="@string/brightness" />
-
-        <ListPreference
-                android:key="screen_timeout"
-                android:title="@string/screen_timeout"
-                android:summary="@string/screen_timeout_summary"
-                android:persistent="false"
-                android:entries="@array/screen_timeout_entries"
-                android:entryValues="@array/screen_timeout_values" />
-    </PreferenceCategory>
+                android:key="emergency_tone"
+                android:title="@string/emergency_tone_title"
+                android:summary="@string/emergency_tone_summary"
+                android:entries="@array/emergency_tone_entries"
+                android:entryValues="@array/emergency_tone_values" />
 
 </PreferenceScreen>
diff --git a/res/xml/testing_settings.xml b/res/xml/testing_settings.xml
index 87c9cf8..4b3ea0b 100644
--- a/res/xml/testing_settings.xml
+++ b/res/xml/testing_settings.xml
@@ -45,6 +45,15 @@
                 android:targetPackage="com.android.settings"
                 android:targetClass="com.android.settings.UsageStats" />
     </PreferenceScreen>
+
+    <PreferenceScreen
+            android:title="@string/testing_wifi_info" >
+        <intent
+                android:action="android.intent.action.MAIN"
+                android:targetPackage="com.android.settings"
+                android:targetClass="com.android.settings.wifi.WifiInfo" />
+    </PreferenceScreen>
+
     <!--    
     <PreferenceScreen
             android:title="@string/testing_sim_toolkit">
diff --git a/res/xml/testing_wifi_settings.xml b/res/xml/testing_wifi_settings.xml
new file mode 100644
index 0000000..7844aaa
--- /dev/null
+++ b/res/xml/testing_wifi_settings.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<PreferenceScreen
+xmlns:android="http://schemas.android.com/apk/res/android"
+android:title="@string/testing_wifi_info"
+android:key="parent">
+
+    <Preference
+        android:title="@string/wifi_api_test" >
+                <intent
+                android:action="android.intent.action.MAIN"
+                android:targetPackage="com.android.settings"
+                android:targetClass="com.android.settings.wifi.WifiAPITest" />
+    </Preference>
+
+    <Preference
+        android:title="@string/wifi_config_info" >
+        <intent
+                android:action="android.intent.action.MAIN"
+                android:targetPackage="com.android.settings"
+                android:targetClass="com.android.settings.wifi.WifiConfigInfo" />
+    </Preference>
+
+    <Preference
+        android:title="@string/wifi_status_test" >
+        <intent
+                android:action="android.intent.action.MAIN"
+                android:targetPackage="com.android.settings"
+                android:targetClass="com.android.settings.wifi.WifiStatusTest" />
+    </Preference>
+
+</PreferenceScreen>
diff --git a/res/xml/timezones.xml b/res/xml/timezones.xml
index c9667b8..9c7bd56 100644
--- a/res/xml/timezones.xml
+++ b/res/xml/timezones.xml
@@ -19,7 +19,7 @@
     <timezone id="America/Manaus">Manaus</timezone>
     <timezone id="America/Santiago">Santiago</timezone>
     <timezone id="America/St_Johns">Newfoundland</timezone>
-    <timezone id="America/Araguaina">Brasilia</timezone>
+    <timezone id="America/Sao_Paulo">Brasilia</timezone>
     <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
     <timezone id="America/Godthab">Greenland</timezone>
     <timezone id="America/Montevideo">Montevideo</timezone>
diff --git a/res/xml/tts_settings.xml b/res/xml/tts_settings.xml
index d94d575..6b1a843 100644
--- a/res/xml/tts_settings.xml
+++ b/res/xml/tts_settings.xml
@@ -37,6 +37,11 @@
                     
         <PreferenceCategory
             android:title="@string/tts_default_settings_section">
+            <ListPreference
+                android:key="tts_default_synth"
+                android:title="@string/tts_default_synth_title"
+                android:summary="@string/tts_default_synth_summary"
+                android:persistent="false" />
             
             <ListPreference
                 android:key="tts_default_rate"
diff --git a/res/xml/voice_input_output_settings.xml b/res/xml/voice_input_output_settings.xml
new file mode 100644
index 0000000..c916415
--- /dev/null
+++ b/res/xml/voice_input_output_settings.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:title="@string/voice_input_output_settings_title"
+        android:key="parent">
+    
+    <PreferenceScreen android:key="voice_search_settings"
+            android:title="@string/voice_search_settings_title">
+        <intent android:action="android.speech.action.VOICE_SEARCH_SETTINGS"/>
+    </PreferenceScreen>
+    
+    <!-- TODO: Link to a specific voice settings activity within LatinIME when it exists. -->
+    <PreferenceScreen android:key="keyboard_settings"
+            android:title="@string/keyboard_settings_title">
+        <intent android:action="android.intent.action.MAIN"
+                android:targetPackage="com.android.inputmethod.latin"
+                android:targetClass="com.android.inputmethod.latin.LatinIMESettings" />
+    </PreferenceScreen>
+    
+    <PreferenceScreen android:key="tts_settings"
+            android:title="@string/tts_settings_title">
+        <intent android:action="android.intent.action.MAIN"
+                android:targetPackage="com.android.settings"
+                android:targetClass="com.android.settings.TextToSpeechSettings" />
+    </PreferenceScreen>
+    
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index 1bb55ef..2493021 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -44,14 +44,12 @@
         android:key="toggle_bluetooth"
         android:title="@string/bluetooth_quick_toggle_title"
         android:summary="@string/bluetooth_quick_toggle_summary"
-        android:persistent="false"
-        android:dependency="toggle_airplane" />
+        android:persistent="false" />
 
     <PreferenceScreen
         android:key="bt_settings"
         android:title="@string/bluetooth_settings_title"
-        android:summary="@string/bluetooth_settings_summary"
-        android:dependency="toggle_airplane">
+        android:summary="@string/bluetooth_settings_summary">
         <intent
             android:action="android.intent.action.MAIN"
             android:targetPackage="com.android.settings"
diff --git a/src/com/android/settings/AccessibilitySettings.java b/src/com/android/settings/AccessibilitySettings.java
index 6199e50..1d6db20 100644
--- a/src/com/android/settings/AccessibilitySettings.java
+++ b/src/com/android/settings/AccessibilitySettings.java
@@ -19,8 +19,14 @@
 import android.app.AlertDialog;
 import android.app.Service;
 import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.ServiceInfo;
+import android.net.Uri;
 import android.os.Bundle;
+import android.os.SystemProperties;
 import android.preference.CheckBoxPreference;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
@@ -39,6 +45,9 @@
  * Activity with the accessibility settings.
  */
 public class AccessibilitySettings extends PreferenceActivity {
+    private static final String DEFAULT_SCREENREADER_MARKET_LINK =
+        "market://search?q=pname:com.google.android.marvin.talkback";
+
     private final String TOGGLE_ACCESSIBILITY_SERVICE_CHECKBOX =
         "toggle_accessibility_service_checkbox";
 
@@ -108,6 +117,9 @@
                 setAccessibilityServicePreferencesState(false);
             }
             mToggleCheckBox.setEnabled(false);
+            // Notify user that they do not have any accessibility apps
+            // installed and direct them to Market to get TalkBack
+            displayNoAppsAlert();
         }
     }
 
@@ -274,4 +286,42 @@
             mAccessibilityServicesCategory.addPreference(preference);
         }
     }
+
+    /**
+     * Displays a message telling the user that they do not have any accessibility
+     * related apps installed and that they can get TalkBack (Google's free screen
+     * reader) from Market.
+     */
+    private void displayNoAppsAlert() {
+        try {

+            PackageManager pm = getPackageManager();

+            ApplicationInfo info = pm.getApplicationInfo("com.android.vending", 0);

+        } catch (NameNotFoundException e) {
+            // This is a no-op if the user does not have Android Market

+            return;

+        }
+        AlertDialog.Builder noAppsAlert = new AlertDialog.Builder(this);
+        noAppsAlert.setTitle(R.string.accessibility_service_no_apps_title);
+        noAppsAlert.setMessage(R.string.accessibility_service_no_apps_message);
+
+        noAppsAlert.setPositiveButton(android.R.string.ok,
+            new DialogInterface.OnClickListener() {
+                public void onClick(DialogInterface dialog, int which) {
+                    String screenreaderMarketLink =
+                        SystemProperties.get("ro.screenreader.market", DEFAULT_SCREENREADER_MARKET_LINK);
+                    Uri marketUri = Uri.parse(screenreaderMarketLink);
+                    Intent marketIntent = new Intent(Intent.ACTION_VIEW, marketUri);
+                    startActivity(marketIntent);
+                    finish();
+                }
+            });
+
+        noAppsAlert.setNegativeButton(android.R.string.cancel,
+            new DialogInterface.OnClickListener() {
+                public void onClick(DialogInterface dialog, int which) {
+                }
+            });
+
+        noAppsAlert.show();
+    }
 }
diff --git a/src/com/android/settings/ActivityPicker.java b/src/com/android/settings/ActivityPicker.java
index 4b0469c..d984adb 100644
--- a/src/com/android/settings/ActivityPicker.java
+++ b/src/com/android/settings/ActivityPicker.java
@@ -16,6 +16,7 @@
 
 package com.android.settings;
 
+import android.graphics.ColorFilter;
 import android.util.DisplayMetrics;
 import com.android.internal.app.AlertActivity;
 import com.android.internal.app.AlertController;
@@ -349,68 +350,124 @@
             int width = mIconWidth;
             int height = mIconHeight;
 
-            if (icon instanceof PaintDrawable) {
-                PaintDrawable painter = (PaintDrawable) icon;
-                painter.setIntrinsicWidth(width);
-                painter.setIntrinsicHeight(height);
-            } else if (icon instanceof BitmapDrawable) {
-                // Ensure the bitmap has a density.
-                BitmapDrawable bitmapDrawable = (BitmapDrawable) icon;
-                Bitmap bitmap = bitmapDrawable.getBitmap();
-                if (bitmap.getDensity() == Bitmap.DENSITY_NONE) {
-                    bitmapDrawable.setTargetDensity(mMetrics);
-                }
+            if (icon == null) {
+                return new EmptyDrawable(width, height);
             }
-            int iconWidth = icon.getIntrinsicWidth();
-            int iconHeight = icon.getIntrinsicHeight();
-
-            if (iconWidth > 0 && iconHeight > 0) {
-                if (width < iconWidth || height < iconHeight) {
-                    final float ratio = (float) iconWidth / iconHeight;
-
-                    if (iconWidth > iconHeight) {
-                        height = (int) (width / ratio);
-                    } else if (iconHeight > iconWidth) {
-                        width = (int) (height * ratio);
+            
+            try {
+                if (icon instanceof PaintDrawable) {
+                    PaintDrawable painter = (PaintDrawable) icon;
+                    painter.setIntrinsicWidth(width);
+                    painter.setIntrinsicHeight(height);
+                } else if (icon instanceof BitmapDrawable) {
+                    // Ensure the bitmap has a density.
+                    BitmapDrawable bitmapDrawable = (BitmapDrawable) icon;
+                    Bitmap bitmap = bitmapDrawable.getBitmap();
+                    if (bitmap.getDensity() == Bitmap.DENSITY_NONE) {
+                        bitmapDrawable.setTargetDensity(mMetrics);
                     }
-
-                    final Bitmap.Config c = icon.getOpacity() != PixelFormat.OPAQUE ?
-                                Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565;
-                    final Bitmap thumb = Bitmap.createBitmap(mIconWidth, mIconHeight, c);
-                    final Canvas canvas = mCanvas;
-                    canvas.setBitmap(thumb);
-                    // Copy the old bounds to restore them later
-                    // If we were to do oldBounds = icon.getBounds(),
-                    // the call to setBounds() that follows would
-                    // change the same instance and we would lose the
-                    // old bounds
-                    mOldBounds.set(icon.getBounds());
-                    final int x = (mIconWidth - width) / 2;
-                    final int y = (mIconHeight - height) / 2;
-                    icon.setBounds(x, y, x + width, y + height);
-                    icon.draw(canvas);
-                    icon.setBounds(mOldBounds);
-                    //noinspection deprecation
-                    icon = new BitmapDrawable(thumb);
-                    ((BitmapDrawable) icon).setTargetDensity(mMetrics);
-                } else if (iconWidth < width && iconHeight < height) {
-                    final Bitmap.Config c = Bitmap.Config.ARGB_8888;
-                    final Bitmap thumb = Bitmap.createBitmap(mIconWidth, mIconHeight, c);
-                    final Canvas canvas = mCanvas;
-                    canvas.setBitmap(thumb);
-                    mOldBounds.set(icon.getBounds());
-                    final int x = (width - iconWidth) / 2;
-                    final int y = (height - iconHeight) / 2;
-                    icon.setBounds(x, y, x + iconWidth, y + iconHeight);
-                    icon.draw(canvas);
-                    icon.setBounds(mOldBounds);
-                    //noinspection deprecation
-                    icon = new BitmapDrawable(thumb);
-                    ((BitmapDrawable) icon).setTargetDensity(mMetrics);
                 }
+                int iconWidth = icon.getIntrinsicWidth();
+                int iconHeight = icon.getIntrinsicHeight();
+    
+                if (iconWidth > 0 && iconHeight > 0) {
+                    if (width < iconWidth || height < iconHeight) {
+                        final float ratio = (float) iconWidth / iconHeight;
+    
+                        if (iconWidth > iconHeight) {
+                            height = (int) (width / ratio);
+                        } else if (iconHeight > iconWidth) {
+                            width = (int) (height * ratio);
+                        }
+    
+                        final Bitmap.Config c = icon.getOpacity() != PixelFormat.OPAQUE ?
+                                    Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565;
+                        final Bitmap thumb = Bitmap.createBitmap(mIconWidth, mIconHeight, c);
+                        final Canvas canvas = mCanvas;
+                        canvas.setBitmap(thumb);
+                        // Copy the old bounds to restore them later
+                        // If we were to do oldBounds = icon.getBounds(),
+                        // the call to setBounds() that follows would
+                        // change the same instance and we would lose the
+                        // old bounds
+                        mOldBounds.set(icon.getBounds());
+                        final int x = (mIconWidth - width) / 2;
+                        final int y = (mIconHeight - height) / 2;
+                        icon.setBounds(x, y, x + width, y + height);
+                        icon.draw(canvas);
+                        icon.setBounds(mOldBounds);
+                        //noinspection deprecation
+                        icon = new BitmapDrawable(thumb);
+                        ((BitmapDrawable) icon).setTargetDensity(mMetrics);
+                    } else if (iconWidth < width && iconHeight < height) {
+                        final Bitmap.Config c = Bitmap.Config.ARGB_8888;
+                        final Bitmap thumb = Bitmap.createBitmap(mIconWidth, mIconHeight, c);
+                        final Canvas canvas = mCanvas;
+                        canvas.setBitmap(thumb);
+                        mOldBounds.set(icon.getBounds());
+                        final int x = (width - iconWidth) / 2;
+                        final int y = (height - iconHeight) / 2;
+                        icon.setBounds(x, y, x + iconWidth, y + iconHeight);
+                        icon.draw(canvas);
+                        icon.setBounds(mOldBounds);
+                        //noinspection deprecation
+                        icon = new BitmapDrawable(thumb);
+                        ((BitmapDrawable) icon).setTargetDensity(mMetrics);
+                    }
+                }
+    
+            } catch (Throwable t) {
+                icon = new EmptyDrawable(width, height);
             }
 
             return icon;
         }
     }
+
+    private static class EmptyDrawable extends Drawable {
+        private final int mWidth;
+        private final int mHeight;
+
+        EmptyDrawable(int width, int height) {
+            mWidth = width;
+            mHeight = height;
+        }
+
+        @Override
+        public int getIntrinsicWidth() {
+            return mWidth;
+        }
+
+        @Override
+        public int getIntrinsicHeight() {
+            return mHeight;
+        }
+
+        @Override
+        public int getMinimumWidth() {
+            return mWidth;
+        }
+
+        @Override
+        public int getMinimumHeight() {
+            return mHeight;
+        }
+
+        @Override
+        public void draw(Canvas canvas) {
+        }
+
+        @Override
+        public void setAlpha(int alpha) {
+        }
+
+        @Override
+        public void setColorFilter(ColorFilter cf) {
+        }
+
+        @Override
+        public int getOpacity() {
+            return PixelFormat.TRANSLUCENT;
+        }
+    }    
 }
diff --git a/src/com/android/settings/AppWidgetPickActivity.java b/src/com/android/settings/AppWidgetPickActivity.java
index cddc687..176ac80 100644
--- a/src/com/android/settings/AppWidgetPickActivity.java
+++ b/src/com/android/settings/AppWidgetPickActivity.java
@@ -167,6 +167,7 @@
      */
     void putAppWidgetItems(List<AppWidgetProviderInfo> appWidgets,
             List<Bundle> customExtras, List<PickAdapter.Item> items) {
+        if (appWidgets == null) return;
         final int size = appWidgets.size();
         for (int i = 0; i < size; i++) {
             AppWidgetProviderInfo info = appWidgets.get(i);
diff --git a/src/com/android/settings/BandMode.java b/src/com/android/settings/BandMode.java
index a8c7833..4c7663e 100644
--- a/src/com/android/settings/BandMode.java
+++ b/src/com/android/settings/BandMode.java
@@ -62,7 +62,7 @@
         setContentView(R.layout.band_mode);
 
         setTitle(getString(R.string.band_mode_title));
-        getWindow().setLayout(WindowManager.LayoutParams.FILL_PARENT,
+        getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT,
                                     WindowManager.LayoutParams.WRAP_CONTENT);
 
         mPhone = PhoneFactory.getDefaultPhone();
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
new file mode 100644
index 0000000..a3c8d8a
--- /dev/null
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import com.android.internal.widget.LockPatternUtils;
+
+import android.app.Activity;
+import android.app.DevicePolicyManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+public class ChooseLockGeneric extends Activity {
+    private ChooseLockSettingsHelper mChooseLockSettingsHelper;
+    DevicePolicyManager mDPM;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        
+        mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
+        mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this);
+        
+        final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils();
+        
+        int mode = getIntent().getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY, -1);
+        if (mode == -1) {
+            mode = lockPatternUtils.getPasswordMode();
+        }
+        int minMode = mDPM.getPasswordMode();
+        if (mode < minMode) {
+            mode = minMode;
+        }
+        if (mode >= DevicePolicyManager.PASSWORD_MODE_NUMERIC) {
+            int minLength = mDPM.getMinimumPasswordLength();
+            if (minLength < 4) {
+                minLength = 4;
+            }
+            final int maxLength = 16;
+            Intent intent = new Intent().setClass(this, ChooseLockPassword.class);
+            intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, mode);
+            intent.putExtra(ChooseLockPassword.PASSWORD_MIN_KEY, minLength);
+            intent.putExtra(ChooseLockPassword.PASSWORD_MAX_KEY, maxLength);
+            startActivity(intent);
+        } else {
+            boolean showTutorial = !lockPatternUtils.isPatternEverChosen();
+            Intent intent = new Intent();
+            intent.setClass(this, showTutorial
+                    ? ChooseLockPatternTutorial.class
+                    : ChooseLockPattern.class);
+            intent.putExtra("key_lock_method", "pattern");
+            startActivity(intent);
+        }
+        finish();
+    }
+}
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
new file mode 100644
index 0000000..6f9cefd
--- /dev/null
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.ChooseLockPattern.LeftButtonMode;
+import com.android.settings.ChooseLockPattern.RightButtonMode;
+import com.android.settings.ChooseLockPattern.Stage;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.TextView;
+
+
+public class ChooseLockPassword extends Activity implements OnClickListener {
+    private final int digitIds[] = new int[] { R.id.zero, R.id.one, R.id.two, R.id.three,
+            R.id.four, R.id.five, R.id.six, R.id.seven, R.id.eight, R.id.nine };
+    private TextView mPasswordTextView;
+    private int mPasswordMinLength = 4;
+    private int mPasswordMaxLength = 8;
+    private LockPatternUtils mLockPatternUtils;
+    private int mRequestedMode = LockPatternUtils.MODE_PIN;
+    private ChooseLockSettingsHelper mChooseLockSettingsHelper;
+    private com.android.settings.ChooseLockPassword.Stage mUiStage = Stage.Introduction;
+    private TextView mHeaderText;
+    private String mFirstPin;
+    public static final String PASSWORD_MIN_KEY = "lockscreen.password_min";
+    public static final String PASSWORD_MAX_KEY = "lockscreen.password_max";
+    private static Handler mHandler = new Handler();
+    private static final int CONFIRM_EXISTING_REQUEST = 58;
+    static final int RESULT_FINISHED = RESULT_FIRST_USER;
+    private static final long ERROR_MESSAGE_TIMEOUT = 3000;
+
+    /**
+     * Keep track internally of where the user is in choosing a pattern.
+     */
+    protected enum Stage {
+
+        Introduction(R.string.lockpassword_choose_your_password_header),
+        NeedToConfirm(R.string.lockpassword_confirm_your_password_header),
+        ConfirmWrong(R.string.lockpassword_confirm_passwords_dont_match),
+        ChoiceConfirmed(R.string.lockpassword_password_confirmed_header);
+
+        /**
+         * @param headerMessage The message displayed at the top.
+         */
+        Stage(int headerMessage) {
+            this.headerMessage = headerMessage;
+        }
+
+        final int headerMessage;
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mLockPatternUtils = new LockPatternUtils(this);
+        mRequestedMode = getIntent().getIntExtra("password_mode", mRequestedMode);
+        mPasswordMinLength = getIntent().getIntExtra("password_min_length", mPasswordMinLength);
+        mPasswordMaxLength = getIntent().getIntExtra("password_max_length", mPasswordMaxLength);
+        int minMode = mLockPatternUtils.getRequestedPasswordMode();
+        if (mRequestedMode < minMode) {
+            mRequestedMode = minMode;
+        }
+        int minLength = mLockPatternUtils.getRequestedMinimumPasswordLength();
+        if (mPasswordMinLength < minLength) {
+            mPasswordMinLength = minLength;
+        }
+        initViews();
+        mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this);
+        if (savedInstanceState == null) {
+            updateStage(Stage.Introduction);
+            mChooseLockSettingsHelper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST);
+        }
+    }
+
+    private void initViews() {
+        switch(mRequestedMode) {
+            case LockPatternUtils.MODE_PIN:
+            case LockPatternUtils.MODE_PASSWORD:
+            case LockPatternUtils.MODE_PATTERN:
+                setContentView(R.layout.choose_lock_pin);
+                // TODO: alphanumeric layout
+                // setContentView(R.layout.choose_lock_password);
+                for (int i = 0; i < digitIds.length; i++) {
+                    Button button = (Button) findViewById(digitIds[i]);
+                    button.setOnClickListener(this);
+                    button.setText(Integer.toString(i));
+                }
+                break;
+        }
+        findViewById(R.id.ok).setOnClickListener(this);
+        findViewById(R.id.cancel).setOnClickListener(this);
+        findViewById(R.id.backspace).setOnClickListener(this);
+        mPasswordTextView = (TextView) findViewById(R.id.pinDisplay);
+        mHeaderText = (TextView) findViewById(R.id.headerText);
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode,
+            Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        switch (requestCode) {
+            case CONFIRM_EXISTING_REQUEST:
+                if (resultCode != Activity.RESULT_OK) {
+                    setResult(RESULT_FINISHED);
+                    finish();
+                }
+                break;
+        }
+    }
+
+    protected void updateStage(Stage stage) {
+        mHeaderText.setText(stage.headerMessage);
+        mPasswordTextView.setText("");
+        mUiStage = stage;
+    }
+
+    /**
+     * Validates PIN and returns a message to display if PIN fails test.
+     * @param pin
+     * @return message id to display to user
+     */
+    private String validatePassword(String pin) {
+        if (pin.length() < mPasswordMinLength) {
+            return getString(R.string.pin_password_too_short, mPasswordMinLength);
+        }
+        if (pin.length() > mPasswordMaxLength) {
+            return getString(R.string.pin_password_too_long, mPasswordMaxLength);
+        }
+        if (LockPatternUtils.MODE_PIN == mRequestedMode) {
+            Pattern p = Pattern.compile("[0-9]+");
+            Matcher m = p.matcher(pin);
+            if (!m.find()) {
+                return getString(R.string.pin_password_contains_non_digits);
+            }
+        } else if (LockPatternUtils.MODE_PASSWORD == mRequestedMode) {
+            // allow Latin-1 characters only
+            for (int i = 0; i < pin.length(); i++) {
+                char c = pin.charAt(i);
+                if (c <= 32 || c > 127) {
+                    return getString(R.string.pin_password_illegal_character);
+                }
+            }
+        }
+        return null;
+    }
+
+    public void onClick(View v) {
+        switch (v.getId()) {
+            case R.id.ok:
+                {
+                    final String pin = mPasswordTextView.getText().toString();
+                    if (TextUtils.isEmpty(pin)) {
+                        break;
+                    }
+                    String errorMsg = null;
+                    if (mUiStage == Stage.Introduction) {
+                        errorMsg = validatePassword(pin);
+                        if (errorMsg == null) {
+                            mFirstPin = pin;
+                            updateStage(Stage.NeedToConfirm);
+                        }
+                    } else if (mUiStage == Stage.NeedToConfirm) {
+                        if (mFirstPin.equals(pin)) {
+                            // TODO: move these to LockPatternUtils
+                            mLockPatternUtils.setLockPatternEnabled(false);
+                            mLockPatternUtils.saveLockPattern(null);
+                            mLockPatternUtils.saveLockPassword(pin, mRequestedMode);
+                            finish();
+                        } else {
+                            int msg = R.string.lockpassword_confirm_passwords_dont_match;
+                            errorMsg = getString(msg);
+                        }
+                    }
+                    if (errorMsg != null) {
+                        showError(errorMsg, Stage.Introduction);
+                    }
+                }
+                break;
+
+            case R.id.backspace:
+                {
+                    final Editable digits = mPasswordTextView.getEditableText();
+                    final int len = digits.length();
+                    if (len > 0) {
+                        digits.delete(len-1, len);
+                    }
+                }
+                break;
+
+            case R.id.cancel:
+                finish();
+                break;
+
+            default:
+                // Digits
+                for (int i = 0; i < digitIds.length; i++) {
+                    if (v.getId() == digitIds[i]) {
+                        mPasswordTextView.append(Integer.toString(i));
+                        return;
+                    }
+                }
+                break;
+        }
+    }
+
+    private void showError(String msg, final Stage next) {
+        mHeaderText.setText(msg);
+        mPasswordTextView.setText("");
+        mHandler.postDelayed(new Runnable() {
+            public void run() {
+                updateStage(next);
+            }
+        }, ERROR_MESSAGE_TIMEOUT);
+    }
+}
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index f103c6b..859d96b 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -45,7 +45,6 @@
  * - saves chosen password when confirmed
  */
 public class ChooseLockPattern extends Activity implements View.OnClickListener{
-
     /**
      * Used by the choose lock pattern wizard to indicate the wizard is
      * finished, and each activity in the wizard should finish.
@@ -56,7 +55,9 @@
      * result.
      */
     static final int RESULT_FINISHED = RESULT_FIRST_USER;
-    
+
+    public static final int CONFIRM_EXISTING_REQUEST = 55;
+
     // how long after a confirmation message is shown before moving on
     static final int INFORMATION_MSG_TIMEOUT_MS = 3000;
 
@@ -65,29 +66,38 @@
 
     private static final int ID_EMPTY_MESSAGE = -1;
 
-
     protected TextView mHeaderText;
     protected LockPatternView mLockPatternView;
     protected TextView mFooterText;
     private TextView mFooterLeftButton;
     private TextView mFooterRightButton;
-
     protected List<LockPatternView.Cell> mChosenPattern = null;
 
-    protected LockPatternUtils mLockPatternUtils;
-
     /**
      * The patten used during the help screen to show how to draw a pattern.
      */
     private final List<LockPatternView.Cell> mAnimatePattern =
-            Collections.unmodifiableList(
-                Lists.newArrayList(
-                        LockPatternView.Cell.of(0, 0),
-                        LockPatternView.Cell.of(0, 1),
-                        LockPatternView.Cell.of(1, 1),
-                        LockPatternView.Cell.of(2, 1)
-                    ));
+            Collections.unmodifiableList(Lists.newArrayList(
+                    LockPatternView.Cell.of(0, 0),
+                    LockPatternView.Cell.of(0, 1),
+                    LockPatternView.Cell.of(1, 1),
+                    LockPatternView.Cell.of(2, 1)
+            ));
 
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode,
+            Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        switch (requestCode) {
+            case CONFIRM_EXISTING_REQUEST:
+                if (resultCode != Activity.RESULT_OK) {
+                    setResult(RESULT_FINISHED);
+                    finish();
+                }
+                updateStage(Stage.Introduction);
+                break;
+        }
+    }
 
     /**
      * The pattern listener that responds according to a user choosing a new
@@ -125,7 +135,7 @@
                 }
             }
 
-            public void onPatternCellAdded(List<Cell> pattern) { 
+            public void onPatternCellAdded(List<Cell> pattern) {
 
             }
 
@@ -250,19 +260,19 @@
         }
     };
 
+    private ChooseLockSettingsHelper mChooseLockSettingsHelper;
+
     private static final String KEY_UI_STAGE = "uiStage";
     private static final String KEY_PATTERN_CHOICE = "chosenPattern";
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-
-        mLockPatternUtils = new LockPatternUtils(getContentResolver());
-
+        mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
 
         setupViews();
-        
+
         // make it so unhandled touch events within the unlock screen go to the
         // lock pattern view.
         final LinearLayoutWithDefaultTouchRecepient topLayout
@@ -271,11 +281,12 @@
         topLayout.setDefaultTouchRecepient(mLockPatternView);
 
         if (savedInstanceState == null) {
-            // first launch
-            updateStage(Stage.Introduction);
-            if (mLockPatternUtils.savedPatternExists()) {
-                confirmPattern();
-            } 
+            // first launch. As a security measure, we're in NeedToConfirm mode until we know
+            // there isn't an existing password or the user confirms their password.
+            updateStage(Stage.NeedToConfirm);
+            if (!mChooseLockSettingsHelper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST)) {
+                updateStage(Stage.Introduction);
+            }
         } else {
             // restore from previous state
             final String patternString = savedInstanceState.getString(KEY_PATTERN_CHOICE);
@@ -285,19 +296,20 @@
             updateStage(Stage.values()[savedInstanceState.getInt(KEY_UI_STAGE)]);
         }
     }
-    
+
     /**
      * Keep all "find view" related stuff confined to this function since in
      * case someone needs to subclass and customize.
      */
     protected void setupViews() {
         setContentView(R.layout.choose_lock_pattern);
-        
+
         mHeaderText = (TextView) findViewById(R.id.headerText);
 
         mLockPatternView = (LockPatternView) findViewById(R.id.lockPattern);
         mLockPatternView.setOnPatternListener(mChooseNewLockPatternListener);
-        mLockPatternView.setTactileFeedbackEnabled(mLockPatternUtils.isTactileFeedbackEnabled());        
+        mLockPatternView.setTactileFeedbackEnabled(
+                mChooseLockSettingsHelper.utils().isTactileFeedbackEnabled());
 
         mFooterText = (TextView) findViewById(R.id.footerText);
 
@@ -364,35 +376,6 @@
         return super.onKeyDown(keyCode, event);
     }
 
-    /**
-     * Launch screen to confirm the existing lock pattern.
-     * @see #onActivityResult(int, int, android.content.Intent)
-     */
-    protected void confirmPattern() {
-        final Intent intent = new Intent();
-        intent.setClassName("com.android.settings", "com.android.settings.ConfirmLockPattern");
-        startActivityForResult(intent, 55);
-    }
-
-    /**
-     * @see #confirmPattern
-     */
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode,
-            Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-
-        if (requestCode != 55) {
-            return;
-        }
-
-        if (resultCode != Activity.RESULT_OK) {
-            setResult(RESULT_FINISHED);
-            finish();
-        }
-        updateStage(Stage.Introduction);
-    }
-
     @Override
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
@@ -414,7 +397,7 @@
 
         mUiStage = stage;
 
-        // header text, footer text, visibility and 
+        // header text, footer text, visibility and
         // enabled state all known from the stage
         if (stage == Stage.ChoiceTooShort) {
             mHeaderText.setText(
@@ -486,16 +469,17 @@
     }
 
     private void saveChosenPatternAndFinish() {
-        final boolean lockVirgin = !mLockPatternUtils.isPatternEverChosen();
+        LockPatternUtils utils = mChooseLockSettingsHelper.utils();
+        final boolean lockVirgin = !utils.isPatternEverChosen();
 
-        mLockPatternUtils.saveLockPattern(mChosenPattern);
-        mLockPatternUtils.setLockPatternEnabled(true);
+        utils.saveLockPattern(mChosenPattern);
+        utils.setLockPatternEnabled(true);
 
         if (lockVirgin) {
-            mLockPatternUtils.setVisiblePatternEnabled(true);
-            mLockPatternUtils.setTactileFeedbackEnabled(false);
+            utils.setVisiblePatternEnabled(true);
+            utils.setTactileFeedbackEnabled(false);
         }
-        
+
         setResult(RESULT_FINISHED);
         finish();
     }
diff --git a/src/com/android/settings/ChooseLockPatternTutorial.java b/src/com/android/settings/ChooseLockPatternTutorial.java
index 6e92ca8..aa6213e 100644
--- a/src/com/android/settings/ChooseLockPatternTutorial.java
+++ b/src/com/android/settings/ChooseLockPatternTutorial.java
@@ -25,25 +25,25 @@
 
 public class ChooseLockPatternTutorial extends Activity implements View.OnClickListener {
     private static final int REQUESTCODE_EXAMPLE = 1;
-    
+
     private View mNextButton;
     private View mSkipButton;
-    
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         // Don't show the tutorial if the user has seen it before.
-        LockPatternUtils lockPatternUtils = new LockPatternUtils(getContentResolver());
+        LockPatternUtils lockPatternUtils = new LockPatternUtils(this);
         if (savedInstanceState == null && lockPatternUtils.isPatternEverChosen()) {
             Intent intent = new Intent();
-            intent.setClassName("com.android.settings", "com.android.settings.ChooseLockPattern");
+            intent.setClass(this, ChooseLockPattern.class);
             startActivity(intent);
             finish();
         } else {
             initViews();
         }
     }
-    
+
     private void initViews() {
         setContentView(R.layout.choose_lock_pattern_tutorial);
         mNextButton = findViewById(R.id.next_button);
@@ -70,6 +70,6 @@
             finish();
         }
     }
-    
+
 }
 
diff --git a/src/com/android/settings/ChooseLockSettingsHelper.java b/src/com/android/settings/ChooseLockSettingsHelper.java
new file mode 100644
index 0000000..3697b28e
--- /dev/null
+++ b/src/com/android/settings/ChooseLockSettingsHelper.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import android.app.Activity;
+import android.content.Intent;
+
+import com.android.internal.widget.LockPatternUtils;
+
+public class ChooseLockSettingsHelper {
+    private LockPatternUtils mLockPatternUtils;
+    private Activity mActivity;
+
+    public ChooseLockSettingsHelper(Activity activity) {
+        mActivity = activity;
+        mLockPatternUtils = new LockPatternUtils(activity);
+    }
+
+    public LockPatternUtils utils() {
+        return mLockPatternUtils;
+    }
+
+    /**
+     * If a pattern, password or PIN exists, prompt the user before allowing them to change it.
+     * @return true if one exists and we launched an activity to confirm it
+     * @see #onActivityResult(int, int, android.content.Intent)
+     */
+    protected boolean launchConfirmationActivity(int request) {
+        boolean launched = false;
+        switch (mLockPatternUtils.getPasswordMode()) {
+            case LockPatternUtils.MODE_PATTERN:
+                launched = confirmPattern(request);
+                break;
+            case LockPatternUtils.MODE_PIN:
+            case LockPatternUtils.MODE_PASSWORD:
+                launched = confirmPassword(request);
+                break;
+        }
+        return launched;
+    }
+
+    /**
+     * Launch screen to confirm the existing lock pattern.
+     * @see #onActivityResult(int, int, android.content.Intent)
+     * @return true if we launched an activity to confirm pattern
+     */
+    private boolean confirmPattern(int request) {
+        if (!mLockPatternUtils.isLockPatternEnabled() || !mLockPatternUtils.savedPatternExists()) {
+            return false;
+        }
+        final Intent intent = new Intent();
+        intent.setClassName("com.android.settings", "com.android.settings.ConfirmLockPattern");
+        mActivity.startActivityForResult(intent, request);
+        return true;
+    }
+
+    /**
+     * Launch screen to confirm the existing lock password.
+     * @see #onActivityResult(int, int, android.content.Intent)
+     * @return true if we launched an activity to confirm password
+     */
+    private boolean confirmPassword(int request) {
+        if (!mLockPatternUtils.isLockPasswordEnabled()) return false;
+        final Intent intent = new Intent();
+        intent.setClassName("com.android.settings", "com.android.settings.ConfirmLockPassword");
+        mActivity.startActivityForResult(intent, request);
+        return true;
+    }
+
+
+}
diff --git a/src/com/android/settings/ConfirmLockPassword.java b/src/com/android/settings/ConfirmLockPassword.java
new file mode 100644
index 0000000..5308f88
--- /dev/null
+++ b/src/com/android/settings/ConfirmLockPassword.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import com.android.internal.widget.LockPatternUtils;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.Editable;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.TextView;
+
+public class ConfirmLockPassword extends Activity implements OnClickListener {
+    private static final long ERROR_MESSAGE_TIMEOUT = 3000;
+    private final int digitIds[] = new int[] { R.id.zero, R.id.one, R.id.two, R.id.three,
+            R.id.four, R.id.five, R.id.six, R.id.seven, R.id.eight, R.id.nine };
+    private TextView mPasswordTextView;
+    private LockPatternUtils mLockPatternUtils;
+    private TextView mHeaderText;
+    private Handler mHandler = new Handler();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mLockPatternUtils = new LockPatternUtils(this);
+        initViews();
+    }
+
+    private void initViews() {
+        int mode = mLockPatternUtils.getPasswordMode();
+        if (LockPatternUtils.MODE_PIN == mode || LockPatternUtils.MODE_PASSWORD == mode) {
+            setContentView(R.layout.confirm_lock_pin);
+            for (int i = 0; i < digitIds.length; i++) {
+                Button button = (Button) findViewById(digitIds[i]);
+                button.setOnClickListener(this);
+                button.setText(Integer.toString(i));
+            }
+            findViewById(R.id.ok).setOnClickListener(this);
+            findViewById(R.id.cancel).setOnClickListener(this);
+        }
+        findViewById(R.id.backspace).setOnClickListener(this);
+        mPasswordTextView = (TextView) findViewById(R.id.pinDisplay);
+        mHeaderText = (TextView) findViewById(R.id.headerText);
+        mHeaderText.setText(R.string.lockpassword_confirm_your_password_header);
+    }
+
+    public void onClick(View v) {
+        switch (v.getId()) {
+            case R.id.ok:
+                {
+                    final String pin = mPasswordTextView.getText().toString();
+                    if (mLockPatternUtils.checkPassword(pin)) {
+                        setResult(RESULT_OK);
+                        finish();
+                    } else {
+                        showError(R.string.lockpattern_need_to_unlock_wrong);
+                    }
+                }
+                break;
+
+            case R.id.backspace:
+                {
+                    final Editable digits = mPasswordTextView.getEditableText();
+                    final int len = digits.length();
+                    if (len > 0) {
+                        digits.delete(len-1, len);
+                    }
+                }
+                break;
+
+            case R.id.cancel:
+                setResult(RESULT_CANCELED);
+                finish();
+                break;
+
+            default:
+                // Digits
+                for (int i = 0; i < digitIds.length; i++) {
+                    if (v.getId() == digitIds[i]) {
+                        mPasswordTextView.append(Integer.toString(i));
+                        return;
+                    }
+                }
+                break;
+        }
+    }
+
+    private void showError(int msg) {
+        mHeaderText.setText(msg);
+        mPasswordTextView.setText(null);
+        mHandler.postDelayed(new Runnable() {
+            public void run() {
+                mHeaderText.setText(R.string.lockpassword_confirm_your_password_header);
+            }
+        }, ERROR_MESSAGE_TIMEOUT);
+    }
+}
diff --git a/src/com/android/settings/ConfirmLockPattern.java b/src/com/android/settings/ConfirmLockPattern.java
index a91b45f..eb9a4d8 100644
--- a/src/com/android/settings/ConfirmLockPattern.java
+++ b/src/com/android/settings/ConfirmLockPattern.java
@@ -80,7 +80,7 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        mLockPatternUtils = new LockPatternUtils(getContentResolver());
+        mLockPatternUtils = new LockPatternUtils(this);
 
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         setContentView(R.layout.confirm_lock_pattern);
@@ -94,7 +94,7 @@
         final LinearLayoutWithDefaultTouchRecepient topLayout
                 = (LinearLayoutWithDefaultTouchRecepient) findViewById(
                 R.id.topLayout);
-        topLayout.setDefaultTouchRecepient(mLockPatternView);        
+        topLayout.setDefaultTouchRecepient(mLockPatternView);
 
         Intent intent = getIntent();
         if (intent != null) {
@@ -161,7 +161,7 @@
                 } else {
                     mFooterTextView.setText(R.string.lockpattern_need_to_unlock_footer);
                 }
-                
+
                 mLockPatternView.setEnabled(true);
                 mLockPatternView.enableInput();
                 break;
@@ -176,7 +176,7 @@
                 } else {
                     mFooterTextView.setText(R.string.lockpattern_need_to_unlock_wrong_footer);
                 }
-                
+
                 mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong);
                 mLockPatternView.setEnabled(true);
                 mLockPatternView.enableInput();
diff --git a/src/com/android/settings/CredentialInstaller.java b/src/com/android/settings/CredentialInstaller.java
index 5a457d7..7c63b1c 100644
--- a/src/com/android/settings/CredentialInstaller.java
+++ b/src/com/android/settings/CredentialInstaller.java
@@ -32,6 +32,7 @@
  */
 public class CredentialInstaller extends Activity {
     private static final String TAG = "CredentialInstaller";
+    private static final String UNLOCKING = "ulck";
 
     private KeyStore mKeyStore = KeyStore.getInstance();
     private boolean mUnlocking = false;
@@ -42,15 +43,26 @@
 
         if (!"com.android.certinstaller".equals(getCallingPackage())) finish();
 
-        if (!isKeyStoreLocked()) {
+        if (isKeyStoreUnlocked()) {
             install();
-            finish();
         } else if (!mUnlocking) {
             mUnlocking = true;
             Credentials.getInstance().unlock(this);
-        } else {
-            finish();
+            return;
         }
+        finish();
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outStates) {
+        super.onSaveInstanceState(outStates);
+        outStates.putBoolean(UNLOCKING, mUnlocking);
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Bundle savedStates) {
+        super.onRestoreInstanceState(savedStates);
+        mUnlocking = savedStates.getBoolean(UNLOCKING);
     }
 
     private void install() {
@@ -61,13 +73,13 @@
             byte[] data = bundle.getByteArray(key);
             if (data == null) continue;
             boolean success = mKeyStore.put(key.getBytes(), data);
-            Log.v(TAG, "install " + key + ": " + data.length + "  success? " + success);
+            Log.d(TAG, "install " + key + ": " + data.length + "  success? " + success);
             if (!success) return;
         }
         setResult(RESULT_OK);
     }
 
-    private boolean isKeyStoreLocked() {
-        return (mKeyStore.test() != KeyStore.NO_ERROR);
+    private boolean isKeyStoreUnlocked() {
+        return (mKeyStore.test() == KeyStore.NO_ERROR);
     }
 }
diff --git a/src/com/android/settings/DeviceAdminAdd.java b/src/com/android/settings/DeviceAdminAdd.java
new file mode 100644
index 0000000..b72a91d
--- /dev/null
+++ b/src/com/android/settings/DeviceAdminAdd.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+import android.app.Activity;
+import android.app.DeviceAdminInfo;
+import android.app.DevicePolicyManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AppSecurityPermissions;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+public class DeviceAdminAdd extends Activity {
+    static final String TAG = "DeviceAdminAdd";
+    
+    DevicePolicyManager mDPM;
+    DeviceAdminInfo mDeviceAdmin;
+    CharSequence mAddMsgText;
+    
+    ImageView mActiveIcon;
+    TextView mActiveName;
+    TextView mActiveDescription;
+    TextView mAddMsg;
+    TextView mActiveWarning;
+    ViewGroup mAdminPolicies;
+    
+    View mSelectLayout;
+    ArrayList<DeviceAdminInfo> mAvailablePolicies
+            = new ArrayList<DeviceAdminInfo>();
+    
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
+        DeviceAdminInfo activeAdmin = mDPM.getActiveAdminInfo();
+
+        ComponentName cn = (ComponentName)getIntent().getParcelableExtra(
+                DevicePolicyManager.EXTRA_DEVICE_ADMIN);
+        if (cn == null) {
+            Log.w(TAG, "No component specified in " + getIntent().getAction());
+            finish();
+            return;
+        }
+        if (cn.equals(activeAdmin)) {
+            setResult(Activity.RESULT_OK);
+            finish();
+            return;
+        }
+        if (activeAdmin != null) {
+            Log.w(TAG, "Admin already set, can't do " + getIntent().getAction());
+            finish();
+            return;
+        }
+        
+        ActivityInfo ai;
+        try {
+            ai = getPackageManager().getReceiverInfo(cn,
+                    PackageManager.GET_META_DATA);
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.w(TAG, "Unable to retrieve device policy " + cn, e);
+            finish();
+            return;
+        }
+        
+        ResolveInfo ri = new ResolveInfo();
+        ri.activityInfo = ai;
+        try {
+            mDeviceAdmin= new DeviceAdminInfo(this, ri);
+        } catch (XmlPullParserException e) {
+            Log.w(TAG, "Unable to retrieve device policy " + cn, e);
+            finish();
+            return;
+        } catch (IOException e) {
+            Log.w(TAG, "Unable to retrieve device policy " + cn, e);
+            finish();
+            return;
+        }
+        
+        mAddMsgText = getIntent().getCharSequenceExtra(
+                DevicePolicyManager.EXTRA_ADD_EXPLANATION);
+        
+        setContentView(R.layout.device_admin_add);
+        
+        mActiveIcon = (ImageView)findViewById(R.id.active_icon);
+        mActiveName = (TextView)findViewById(R.id.active_name);
+        mActiveDescription = (TextView)findViewById(R.id.active_description);
+        mAddMsg = (TextView)findViewById(R.id.add_msg);
+        mActiveWarning = (TextView)findViewById(R.id.active_warning);
+        mAdminPolicies = (ViewGroup)findViewById(R.id.admin_policies);
+        findViewById(R.id.add_button).setOnClickListener(new View.OnClickListener() {
+            public void onClick(View v) {
+                mDPM.setActiveAdmin(mDeviceAdmin.getComponent());
+                setResult(Activity.RESULT_OK);
+                finish();
+            }
+        });
+    }
+    
+    @Override
+    protected void onResume() {
+        super.onResume();
+        updateInterface();
+    }
+    
+    void updateInterface() {
+        mActiveIcon.setImageDrawable(mDeviceAdmin.loadIcon(getPackageManager()));
+        mActiveName.setText(mDeviceAdmin.loadLabel(getPackageManager()));
+        try {
+            mActiveDescription.setText(
+                    mDeviceAdmin.loadDescription(getPackageManager()));
+            mActiveDescription.setVisibility(View.VISIBLE);
+        } catch (Resources.NotFoundException e) {
+            mActiveDescription.setVisibility(View.GONE);
+        }
+        if (mAddMsgText != null) {
+            mAddMsg.setText(mAddMsgText);
+            mAddMsg.setVisibility(View.VISIBLE);
+        } else {
+            mAddMsg.setVisibility(View.GONE);
+        }
+        mActiveWarning.setText(getString(R.string.device_admin_warning,
+                mDeviceAdmin.getActivityInfo().applicationInfo.loadLabel(getPackageManager())));
+        ArrayList<DeviceAdminInfo.PolicyInfo> policies = mDeviceAdmin.getUsedPolicies();
+        for (int i=0; i<policies.size(); i++) {
+            DeviceAdminInfo.PolicyInfo pi = policies.get(i);
+            mAdminPolicies.addView(AppSecurityPermissions.getPermissionItemView(
+                    this, getText(pi.label), getText(pi.description), true));
+        }
+    }
+    
+}
diff --git a/src/com/android/settings/DeviceAdminSettings.java b/src/com/android/settings/DeviceAdminSettings.java
new file mode 100644
index 0000000..e6da8e7
--- /dev/null
+++ b/src/com/android/settings/DeviceAdminSettings.java
@@ -0,0 +1,273 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.DeviceAdmin;
+import android.app.DeviceAdminInfo;
+import android.app.DevicePolicyManager;
+import android.app.Dialog;
+import android.app.ListActivity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.RemoteCallback;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class DeviceAdminSettings extends ListActivity {
+    static final String TAG = "DeviceAdminSettings";
+    
+    static final int DIALOG_WARNING = 1;
+    
+    DevicePolicyManager mDPM;
+    DeviceAdminInfo mCurrentAdmin;
+    Handler mHandler;
+    
+    View mActiveLayout;
+    ImageView mActiveIcon;
+    TextView mActiveName;
+    TextView mActiveDescription;
+    
+    View mSelectLayout;
+    ArrayList<DeviceAdminInfo> mAvailablePolicies
+            = new ArrayList<DeviceAdminInfo>();
+    
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
+        mCurrentAdmin = mDPM.getActiveAdminInfo();
+        mHandler = new Handler(getMainLooper());
+        
+        setContentView(R.layout.device_admin_settings);
+        
+        mActiveLayout = findViewById(R.id.active_layout);
+        mActiveIcon = (ImageView)findViewById(R.id.active_icon);
+        mActiveName = (TextView)findViewById(R.id.active_name);
+        mActiveDescription = (TextView)findViewById(R.id.active_description);
+        findViewById(R.id.remove_button).setOnClickListener(new View.OnClickListener() {
+            public void onClick(View v) {
+                if (mCurrentAdmin != null) {
+                    mDPM.getRemoveWarning(mCurrentAdmin.getComponent(),
+                            new RemoteCallback(mHandler) {
+                        @Override
+                        protected void onResult(Bundle bundle) {
+                            CharSequence msg = bundle != null
+                                    ? bundle.getCharSequence(DeviceAdmin.EXTRA_DISABLE_WARNING)
+                                    : null;
+                            if (msg == null) {
+                                mDPM.removeActiveAdmin(mCurrentAdmin.getComponent());
+                                finish();
+                            } else {
+                                Bundle args = new Bundle();
+                                args.putCharSequence(DeviceAdmin.EXTRA_DISABLE_WARNING, msg);
+                                showDialog(DIALOG_WARNING, args);
+                            }
+                        }
+                    });
+                }
+            }
+        });
+        
+        mSelectLayout = findViewById(R.id.select_layout);
+
+        if (DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN.equals(getIntent().getAction())) {
+            ComponentName cn = (ComponentName)getIntent().getParcelableExtra(
+                    DevicePolicyManager.EXTRA_DEVICE_ADMIN);
+            if (cn == null) {
+                Log.w(TAG, "No component specified in " + getIntent().getAction());
+                finish();
+                return;
+            }
+            if (cn.equals(mCurrentAdmin)) {
+                setResult(Activity.RESULT_OK);
+                finish();
+                return;
+            }
+            if (mCurrentAdmin != null) {
+                Log.w(TAG, "Admin already set, can't do " + getIntent().getAction());
+                finish();
+                return;
+            }
+            
+            try {
+                mDPM.setActiveAdmin(cn);
+                setResult(Activity.RESULT_OK);
+            } catch (RuntimeException e) {
+                Log.w(TAG, "Unable to set admin " + cn, e);
+                setResult(Activity.RESULT_CANCELED);
+            }
+            finish();
+        }
+    }
+    
+    @Override
+    protected void onResume() {
+        super.onResume();
+        updateLayout();
+    }
+
+    @Override
+    protected Dialog onCreateDialog(int id, Bundle args) {
+        switch (id) {
+            case DIALOG_WARNING: {
+                CharSequence msg = args.getCharSequence(DeviceAdmin.EXTRA_DISABLE_WARNING);
+                AlertDialog.Builder builder = new AlertDialog.Builder(
+                        DeviceAdminSettings.this);
+                builder.setMessage(msg);
+                builder.setPositiveButton(R.string.dlg_ok,
+                        new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int which) {
+                        mDPM.removeActiveAdmin(mCurrentAdmin.getComponent());
+                        finish();
+                    }
+                });
+                builder.setNegativeButton(R.string.dlg_cancel, null);
+                return builder.create();
+            }
+            default:
+                return super.onCreateDialog(id, args);
+                    
+        }
+    }
+
+    void updateLayout() {
+        if (mCurrentAdmin != null) {
+            mActiveLayout.setVisibility(View.VISIBLE);
+            mSelectLayout.setVisibility(View.GONE);
+            mActiveIcon.setImageDrawable(mCurrentAdmin.loadIcon(getPackageManager()));
+            mActiveName.setText(mCurrentAdmin.loadLabel(getPackageManager()));
+            try {
+                mActiveDescription.setText(
+                        mCurrentAdmin.loadDescription(getPackageManager()));
+            } catch (Resources.NotFoundException e) {
+            }
+        } else {
+            mActiveLayout.setVisibility(View.GONE);
+            mSelectLayout.setVisibility(View.VISIBLE);
+            mAvailablePolicies.clear();
+            List<ResolveInfo> avail = getPackageManager().queryBroadcastReceivers(
+                    new Intent(DeviceAdmin.ACTION_DEVICE_ADMIN_ENABLED),
+                    PackageManager.GET_META_DATA);
+            for (int i=0; i<avail.size(); i++) {
+                ResolveInfo ri = avail.get(i);
+                try {
+                    DeviceAdminInfo dpi = new DeviceAdminInfo(this, ri);
+                    mAvailablePolicies.add(dpi);
+                } catch (XmlPullParserException e) {
+                    Log.w(TAG, "Skipping " + ri.activityInfo, e);
+                } catch (IOException e) {
+                    Log.w(TAG, "Skipping " + ri.activityInfo, e);
+                }
+            }
+            getListView().setAdapter(new PolicyListAdapter());
+        }
+    }
+    
+    @Override
+    protected void onListItemClick(ListView l, View v, int position, long id) {
+        DeviceAdminInfo dpi = (DeviceAdminInfo)l.getAdapter().getItem(position);
+        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
+        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, dpi.getComponent());
+        startActivity(intent);
+    }
+    
+    static class ViewHolder {
+        ImageView icon;
+        TextView name;
+    }
+    
+    class PolicyListAdapter extends BaseAdapter {
+        final LayoutInflater mInflater;
+        
+        PolicyListAdapter() {
+            mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        }
+
+        public boolean hasStableIds() {
+            return true;
+        }
+        
+        public int getCount() {
+            return mAvailablePolicies.size();
+        }
+
+        public Object getItem(int position) {
+            return mAvailablePolicies.get(position);
+        }
+
+        public long getItemId(int position) {
+            return position;
+        }
+
+        public boolean areAllItemsEnabled() {
+            return false;
+        }
+
+        public boolean isEnabled(int position) {
+            return true;
+        }
+
+        public View getView(int position, View convertView, ViewGroup parent) {
+            View v;
+            if (convertView == null) {
+                v = newView(parent);
+            } else {
+                v = convertView;
+            }
+            bindView(v, position);
+            return v;
+        }
+        
+        public View newView(ViewGroup parent) {
+            View v = mInflater.inflate(R.layout.device_admin_item, parent, false);
+            ViewHolder h = new ViewHolder();
+            h.icon = (ImageView)v.findViewById(R.id.icon);
+            h.name = (TextView)v.findViewById(R.id.name);
+            v.setTag(h);
+            return v;
+        }
+        
+        public void bindView(View view, int position) {
+            ViewHolder vh = (ViewHolder) view.getTag();
+            DeviceAdminInfo item = mAvailablePolicies.get(position);
+            vh.icon.setImageDrawable(item.loadIcon(getPackageManager()));
+            vh.name.setText(item.loadLabel(getPackageManager()));
+        }
+    }
+}
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
new file mode 100644
index 0000000..28a5829
--- /dev/null
+++ b/src/com/android/settings/DisplaySettings.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
+
+import com.android.settings.bluetooth.DockEventReceiver;
+
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.media.AudioManager;
+import android.os.Bundle;
+import android.os.IMountService;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceGroup;
+import android.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+import android.view.IWindowManager;
+
+public class DisplaySettings extends PreferenceActivity implements
+        Preference.OnPreferenceChangeListener {
+    private static final String TAG = "DisplaySettings";
+
+    /** If there is no setting in the provider, use this. */
+    private static final int FALLBACK_SCREEN_TIMEOUT_VALUE = 30000;
+
+    private static final String KEY_SCREEN_TIMEOUT = "screen_timeout";
+    private static final String KEY_ANIMATIONS = "animations";
+    private static final String KEY_ACCELEROMETER = "accelerometer";
+
+    private ListPreference mAnimations;
+    private CheckBoxPreference mAccelerometer;
+    private float[] mAnimationScales;
+
+    private IWindowManager mWindowManager;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        ContentResolver resolver = getContentResolver();
+        mWindowManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
+
+        addPreferencesFromResource(R.xml.display_settings);
+
+        mAnimations = (ListPreference) findPreference(KEY_ANIMATIONS);
+        mAnimations.setOnPreferenceChangeListener(this);
+        mAccelerometer = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
+        mAccelerometer.setPersistent(false);
+
+        ListPreference screenTimeoutPreference =
+            (ListPreference) findPreference(KEY_SCREEN_TIMEOUT);
+        screenTimeoutPreference.setValue(String.valueOf(Settings.System.getInt(
+                resolver, SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE)));
+        screenTimeoutPreference.setOnPreferenceChangeListener(this);
+
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+
+        updateState(true);
+    }
+
+    private void updateState(boolean force) {
+        int animations = 0;
+        try {
+            mAnimationScales = mWindowManager.getAnimationScales();
+        } catch (RemoteException e) {
+        }
+        if (mAnimationScales != null) {
+            if (mAnimationScales.length >= 1) {
+                animations = ((int)(mAnimationScales[0]+.5f)) % 10;
+            }
+            if (mAnimationScales.length >= 2) {
+                animations += (((int)(mAnimationScales[1]+.5f)) & 0x7) * 10;
+            }
+        }
+        int idx = 0;
+        int best = 0;
+        CharSequence[] aents = mAnimations.getEntryValues();
+        for (int i=0; i<aents.length; i++) {
+            int val = Integer.parseInt(aents[i].toString());
+            if (val <= animations && val > best) {
+                best = val;
+                idx = i;
+            }
+        }
+        mAnimations.setValueIndex(idx);
+        updateAnimationsSummary(mAnimations.getValue());
+        mAccelerometer.setChecked(Settings.System.getInt(
+                getContentResolver(),
+                Settings.System.ACCELEROMETER_ROTATION, 0) != 0);
+    }
+
+    private void updateAnimationsSummary(Object value) {
+        CharSequence[] summaries = getResources().getTextArray(R.array.animations_summaries);
+        CharSequence[] values = mAnimations.getEntryValues();
+        for (int i=0; i<values.length; i++) {
+            //Log.i("foo", "Comparing entry "+ values[i] + " to current "
+            //        + mAnimations.getValue());
+            if (values[i].equals(value)) {
+                mAnimations.setSummary(summaries[i]);
+                break;
+            }
+        }
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+        if (preference == mAccelerometer) {
+            Settings.System.putInt(getContentResolver(),
+                    Settings.System.ACCELEROMETER_ROTATION,
+                    mAccelerometer.isChecked() ? 1 : 0);
+        }
+        return true;
+    }
+
+    public boolean onPreferenceChange(Preference preference, Object objValue) {
+        final String key = preference.getKey();
+        if (KEY_ANIMATIONS.equals(key)) {
+            try {
+                int value = Integer.parseInt((String) objValue);
+                if (mAnimationScales.length >= 1) {
+                    mAnimationScales[0] = value%10;
+                }
+                if (mAnimationScales.length >= 2) {
+                    mAnimationScales[1] = (value/10)%10;
+                }
+                try {
+                    mWindowManager.setAnimationScales(mAnimationScales);
+                } catch (RemoteException e) {
+                }
+                updateAnimationsSummary(objValue);
+            } catch (NumberFormatException e) {
+                Log.e(TAG, "could not persist animation setting", e);
+            }
+
+        }
+        if (KEY_SCREEN_TIMEOUT.equals(key)) {
+            int value = Integer.parseInt((String) objValue);
+            try {
+                Settings.System.putInt(getContentResolver(),
+                        SCREEN_OFF_TIMEOUT, value);
+            } catch (NumberFormatException e) {
+                Log.e(TAG, "could not persist screen timeout setting", e);
+            }
+        }
+
+        return true;
+    }
+}
diff --git a/src/com/android/settings/InstalledAppDetails.java b/src/com/android/settings/InstalledAppDetails.java
index d05014b..eeecf46 100644
--- a/src/com/android/settings/InstalledAppDetails.java
+++ b/src/com/android/settings/InstalledAppDetails.java
@@ -280,7 +280,7 @@
         if (pkgInfo != null) {
             mAppVersion.setVisibility(View.VISIBLE);
             mAppVersion.setText(getString(R.string.version_text,
-                    String.valueOf(pkgInfo.versionCode)));
+                    String.valueOf(pkgInfo.versionName)));
         } else {
             mAppVersion.setVisibility(View.GONE);
         }
@@ -539,7 +539,7 @@
         } else if (v == mForceStopButton) {
             ActivityManager am = (ActivityManager)getSystemService(
                     Context.ACTIVITY_SERVICE);
-            am.restartPackage(packageName);
+            am.forceStopPackage(packageName);
         }
     }
 
diff --git a/src/com/android/settings/LauncherAppWidgetBinder.java b/src/com/android/settings/LauncherAppWidgetBinder.java
deleted file mode 100644
index 98ea246..0000000
--- a/src/com/android/settings/LauncherAppWidgetBinder.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings;
-
-import android.app.Activity;
-import android.appwidget.AppWidgetManager;
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Intent;
-import android.content.ComponentName;
-import android.database.Cursor;
-import android.database.SQLException;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.BaseColumns;
-import android.util.Log;
-
-import java.util.ArrayList;
-
-public class LauncherAppWidgetBinder extends Activity {
-    private static final String TAG = "LauncherAppWidgetBinder";
-    private static final boolean LOGD = true;
-    
-    static final String AUTHORITY = "com.android.launcher.settings";
-    static final String TABLE_FAVORITES = "favorites";
-    
-    static final String EXTRA_BIND_SOURCES = "com.android.launcher.settings.bindsources";
-    static final String EXTRA_BIND_TARGETS = "com.android.launcher.settings.bindtargets";
-
-    static final String EXTRA_APPWIDGET_BITMAPS = "com.android.camera.appwidgetbitmaps";
-    
-    /**
-     * {@link ContentProvider} constants pulled over from Launcher
-     */
-    static final class LauncherProvider implements BaseColumns {
-        static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + TABLE_FAVORITES);
-
-        static final String ITEM_TYPE = "itemType";
-        static final String APPWIDGET_ID = "appWidgetId";
-        static final String ICON = "icon";
-
-        static final int ITEM_TYPE_APPWIDGET = 4;
-        static final int ITEM_TYPE_WIDGET_CLOCK = 1000;
-        static final int ITEM_TYPE_WIDGET_SEARCH = 1001;
-        static final int ITEM_TYPE_WIDGET_PHOTO_FRAME = 1002;
-    }
-    
-    static final String[] BIND_PROJECTION = new String[] {
-        LauncherProvider._ID,
-        LauncherProvider.ITEM_TYPE,
-        LauncherProvider.APPWIDGET_ID,
-        LauncherProvider.ICON,
-    };
-    
-    static final int INDEX_ID = 0;
-    static final int INDEX_ITEM_TYPE = 1;
-    static final int INDEX_APPWIDGET_ID = 2;
-    static final int INDEX_ICON = 3;
-    
-    static final ComponentName BIND_PHOTO_APPWIDGET = new ComponentName("com.android.camera",
-            "com.android.camera.PhotoAppWidgetBind");
-
-    @Override
-    protected void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-        finish();
-
-        // This helper reaches into the Launcher database and binds any unlinked
-        // widgets. If will remove any items that can't be bound successfully.
-        // We protect this binder at the manifest level by asserting the caller
-        // has the Launcher WRITE_SETTINGS permission.
-        
-        final Intent intent = getIntent();
-        final Bundle extras = intent.getExtras();
-        
-        int[] bindSources = null;
-        ArrayList<ComponentName> bindTargets = null;
-        Exception exception = null;
-
-        try {
-            bindSources = extras.getIntArray(EXTRA_BIND_SOURCES);
-            bindTargets = intent.getParcelableArrayListExtra(EXTRA_BIND_TARGETS);
-        } catch (ClassCastException ex) {
-            exception = ex;
-        }
-        
-        if (exception != null || bindSources == null || bindTargets == null ||
-                bindSources.length != bindTargets.size()) {
-            Log.w(TAG, "Problem reading incoming bind request, or invalid request", exception);
-            return;
-        }
-        
-        final String selectWhere = buildOrWhereString(LauncherProvider.ITEM_TYPE, bindSources);
-        
-        final ContentResolver resolver = getContentResolver();
-        final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
-        
-        boolean foundPhotoAppWidgets = false;
-        final ArrayList<Integer> photoAppWidgetIds = new ArrayList<Integer>();
-        final ArrayList<Bitmap> photoBitmaps = new ArrayList<Bitmap>();
-        
-        Cursor c = null;
-        
-        try {
-            c = resolver.query(LauncherProvider.CONTENT_URI,
-                    BIND_PROJECTION, selectWhere, null, null);
-            
-            if (LOGD) Log.d(TAG, "found bind cursor count="+c.getCount());
-            
-            final ContentValues values = new ContentValues();
-            while (c != null && c.moveToNext()) {
-                long favoriteId = c.getLong(INDEX_ID);
-                int itemType = c.getInt(INDEX_ITEM_TYPE);
-                int appWidgetId = c.getInt(INDEX_APPWIDGET_ID);
-                byte[] iconData = c.getBlob(INDEX_ICON);
-                
-                // Find the binding target for this type
-                ComponentName targetAppWidget = null;
-                for (int i = 0; i < bindSources.length; i++) {
-                    if (bindSources[i] == itemType) {
-                        targetAppWidget = bindTargets.get(i);
-                        break;
-                    }
-                }
-                
-                if (LOGD) Log.d(TAG, "found matching targetAppWidget="+targetAppWidget.toString()+" for favoriteId="+favoriteId);
-                
-                boolean bindSuccess = false;
-                try {
-                    appWidgetManager.bindAppWidgetId(appWidgetId, targetAppWidget);
-                    bindSuccess = true;
-                } catch (RuntimeException ex) {
-                    Log.w(TAG, "Problem binding widget", ex);
-                }
-                
-                // Handle special case of photo widget by loading bitmap and
-                // preparing for later binding
-                if (bindSuccess && iconData != null &&
-                        itemType == LauncherProvider.ITEM_TYPE_WIDGET_PHOTO_FRAME) {
-                    Bitmap bitmap = BitmapFactory.decodeByteArray(iconData, 0, iconData.length);
-                    
-                    photoAppWidgetIds.add(appWidgetId);
-                    photoBitmaps.add(bitmap);
-                    foundPhotoAppWidgets = true;
-                }
-
-                if (LOGD) Log.d(TAG, "after finished, success="+bindSuccess);
-
-                // Depending on success, update launcher or remove item
-                Uri favoritesUri = ContentUris.withAppendedId(LauncherProvider.CONTENT_URI, favoriteId);
-                if (bindSuccess) {
-                    values.clear();
-                    values.put(LauncherProvider.ITEM_TYPE, LauncherProvider.ITEM_TYPE_APPWIDGET);
-                    values.putNull(LauncherProvider.ICON);
-                    resolver.update(favoritesUri, values, null, null);
-                } else {
-                    resolver.delete(favoritesUri, null, null);
-                }
-                    
-            }
-        } catch (SQLException ex) {
-            Log.w(TAG, "Problem while binding appWidgetIds for Launcher", ex);
-        } finally {
-            if (c != null) {
-                c.close();
-            }
-        }
-        
-        if (foundPhotoAppWidgets) {
-            // Convert appWidgetIds into int[]
-            final int N = photoAppWidgetIds.size();
-            final int[] photoAppWidgetIdsArray = new int[N];
-            for (int i = 0; i < N; i++) {
-                photoAppWidgetIdsArray[i] = photoAppWidgetIds.get(i);
-            }
-            
-            // Launch intent over to handle bitmap binding, but we don't need to
-            // wait around for the result.
-            final Intent bindIntent = new Intent();
-            bindIntent.setComponent(BIND_PHOTO_APPWIDGET);
-            
-            final Bundle bindExtras = new Bundle();
-            bindExtras.putIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS, photoAppWidgetIdsArray);
-            bindExtras.putParcelableArrayList(EXTRA_APPWIDGET_BITMAPS, photoBitmaps);
-            bindIntent.putExtras(bindExtras);
-            
-            startActivity(bindIntent);
-        }
-        
-        if (LOGD) Log.d(TAG, "completely finished with binding for Launcher");
-    }
-    
-    /**
-     * Build a query string that will match any row where the column matches
-     * anything in the values list.
-     */
-    static String buildOrWhereString(String column, int[] values) {
-        StringBuilder selectWhere = new StringBuilder();
-        for (int i = values.length - 1; i >= 0; i--) {
-            selectWhere.append(column).append("=").append(values[i]);
-            if (i > 0) {
-                selectWhere.append(" OR ");
-            }
-        }
-        return selectWhere.toString();
-    }
-    
-}
diff --git a/src/com/android/settings/LocalePicker.java b/src/com/android/settings/LocalePicker.java
index d31e82c..6c73d0a 100644
--- a/src/com/android/settings/LocalePicker.java
+++ b/src/com/android/settings/LocalePicker.java
@@ -37,6 +37,7 @@
 
 public class LocalePicker extends ListActivity {
     private static final String TAG = "LocalePicker";
+    private static final boolean DEBUG = false;
 
     Loc[] mLocales;
     String[] mSpecialLocaleCodes;
@@ -90,8 +91,9 @@
                 Locale l = new Locale(language, country);
 
                 if (finalSize == 0) {
-                    Log.v(TAG, "adding initial "+
-                            toTitleCase(l.getDisplayLanguage(l)));
+                    if (DEBUG) {
+                        Log.v(TAG, "adding initial "+ toTitleCase(l.getDisplayLanguage(l)));
+                    }
                     preprocess[finalSize++] =
                             new Loc(toTitleCase(l.getDisplayLanguage(l)), l);
                 } else {
@@ -101,13 +103,16 @@
                     //  diff lang -> insert ours with lang-only name
                     if (preprocess[finalSize-1].locale.getLanguage().equals(
                             language)) {
-                        Log.v(TAG, "backing up and fixing "+
-                                preprocess[finalSize-1].label+" to "+
-                                getDisplayName(preprocess[finalSize-1].locale));
+                        if (DEBUG) {
+                            Log.v(TAG, "backing up and fixing "+
+                                    preprocess[finalSize-1].label+" to "+
+                                    getDisplayName(preprocess[finalSize-1].locale));
+                        }
                         preprocess[finalSize-1].label = toTitleCase(
                                 getDisplayName(preprocess[finalSize-1].locale));
-                        Log.v(TAG, "  and adding "+
-                                toTitleCase(getDisplayName(l)));
+                        if (DEBUG) {
+                            Log.v(TAG, "  and adding "+ toTitleCase(getDisplayName(l)));
+                        }
                         preprocess[finalSize++] =
                                 new Loc(toTitleCase(getDisplayName(l)), l);
                     } else {
@@ -117,7 +122,9 @@
                         } else {
                             displayName = toTitleCase(l.getDisplayLanguage(l));
                         }
-                        Log.v(TAG, "adding "+displayName);
+                        if (DEBUG) {
+                            Log.v(TAG, "adding "+displayName);
+                        }
                         preprocess[finalSize++] = new Loc(displayName, l);
                     }
                 }
diff --git a/src/com/android/settings/ManageApplications.java b/src/com/android/settings/ManageApplications.java
index 9cd6e23..a5dff9a 100644
--- a/src/com/android/settings/ManageApplications.java
+++ b/src/com/android/settings/ManageApplications.java
@@ -17,11 +17,12 @@
 package com.android.settings;
 
 import com.android.settings.R;
+
 import android.app.ActivityManager;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.ListActivity;
 import android.app.ProgressDialog;
+import android.app.TabActivity;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -42,8 +43,8 @@
 import android.os.Message;
 import android.os.SystemClock;
 import android.text.format.Formatter;
-import android.util.Config;
 import android.util.Log;
+import android.util.SparseArray;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -56,6 +57,7 @@
 import android.widget.Filterable;
 import android.widget.ImageView;
 import android.widget.ListView;
+import android.widget.TabHost;
 import android.widget.TextView;
 import android.widget.AdapterView.OnItemClickListener;
 
@@ -100,23 +102,23 @@
  *  If the user selects an application, extended info(like size, uninstall/clear data options,
  *  permissions info etc.,) is displayed via the InstalledAppDetails activity.
  */
-public class ManageApplications extends ListActivity implements
+public class ManageApplications extends TabActivity implements
         OnItemClickListener, DialogInterface.OnCancelListener,
-        DialogInterface.OnClickListener {
+        TabHost.TabContentFactory,
+        TabHost.OnTabChangeListener {
     // TAG for this activity
     private static final String TAG = "ManageApplications";
     private static final String PREFS_NAME = "ManageAppsInfo.prefs";
     private static final String PREF_DISABLE_CACHE = "disableCache";
     
     // Log information boolean
-    private boolean localLOGV = Config.LOGV || false;
+    private boolean localLOGV = false;
     private static final boolean DEBUG_SIZE = false;
     private static final boolean DEBUG_TIME = false;
     
     // attributes used as keys when passing values to InstalledAppDetails activity
-    public static final String APP_PKG_PREFIX = "com.android.settings.";
-    public static final String APP_PKG_NAME = APP_PKG_PREFIX+"ApplicationPkgName";
-    public static final String APP_CHG = APP_PKG_PREFIX+"changed";
+    public static final String APP_PKG_NAME = "pkg";
+    public static final String APP_CHG = "chg";
     
     // attribute name used in receiver for tagging names of added/deleted packages
     private static final String ATTR_PKG_NAME="p";
@@ -141,8 +143,6 @@
     public static final int FILTER_OPTIONS = MENU_OPTIONS_BASE + 3;
     public static final int SORT_ORDER_ALPHA = MENU_OPTIONS_BASE + 4;
     public static final int SORT_ORDER_SIZE = MENU_OPTIONS_BASE + 5;
-    // Alert Dialog presented to user to find out the filter option
-    private AlertDialog mAlertDlg;
     // sort order
     private int mSortOrder = SORT_ORDER_ALPHA;
     // Filter value
@@ -1554,6 +1554,10 @@
         }
     }
 
+    static final String TAB_DOWNLOADED = "Downloaded";
+    static final String TAB_RUNNING = "Running";
+    static final String TAB_ALL = "All";
+    private View mRootView;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -1564,9 +1568,11 @@
         }
         Intent intent = getIntent();
         String action = intent.getAction();
+        String defaultTabTag = TAB_DOWNLOADED;
         if (action.equals(Intent.ACTION_MANAGE_PACKAGE_STORAGE)) {
             mSortOrder = SORT_ORDER_SIZE;
             mFilterApps = FILTER_APPS_ALL;
+            defaultTabTag = TAB_ALL;
             mSizesFirst = true;
         }
         mPm = getPackageManager();
@@ -1574,20 +1580,20 @@
         requestWindowFeature(Window.FEATURE_RIGHT_ICON);
         requestWindowFeature(Window.FEATURE_PROGRESS);
         requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
-        setContentView(R.layout.compute_sizes);
         showLoadingMsg();
-        mDefaultAppIcon =Resources.getSystem().getDrawable(
+        mDefaultAppIcon = Resources.getSystem().getDrawable(
                 com.android.internal.R.drawable.sym_def_app_icon);
         mInvalidSizeStr = getText(R.string.invalid_size_value);
         mComputingSizeStr = getText(R.string.computing_size);
         // initialize the inflater
         mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        mRootView = mInflater.inflate(R.layout.compute_sizes, null);
         mReceiver = new PackageIntentReceiver();
         mObserver = new PkgSizeObserver();
         // Create adapter and list view here
         List<ApplicationInfo> appList = getInstalledApps(mSortOrder);
         mAppInfoAdapter = new AppInfoAdapter(this, appList);
-        ListView lv= (ListView) findViewById(android.R.id.list);
+        ListView lv = (ListView) mRootView.findViewById(android.R.id.list);
         lv.setOnItemClickListener(this);
         lv.setSaveEnabled(true);
         lv.setItemsCanFocus(true);
@@ -1607,6 +1613,18 @@
         if (DEBUG_TIME) {
             Log.i(TAG, "Took " + (SystemClock.elapsedRealtime()-sStart) + " ms to init cache");
         }
+        final TabHost tabHost = getTabHost();
+        tabHost.addTab(tabHost.newTabSpec(TAB_DOWNLOADED)
+                .setIndicator(getString(R.string.filter_apps_third_party))
+                .setContent(this));
+        tabHost.addTab(tabHost.newTabSpec(TAB_RUNNING)
+                .setIndicator(getString(R.string.filter_apps_running))
+                .setContent(this));
+        tabHost.addTab(tabHost.newTabSpec(TAB_ALL)
+                .setIndicator(getString(R.string.filter_apps_all))
+                .setContent(this));
+        tabHost.setCurrentTabByTag(defaultTabTag);
+        tabHost.setOnTabChangedListener(this);
     }
     
     protected void onDestroy() {
@@ -1922,8 +1940,6 @@
                 .setIcon(android.R.drawable.ic_menu_sort_alphabetically);
         menu.add(0, SORT_ORDER_SIZE, 2, R.string.sort_order_size)
                 .setIcon(android.R.drawable.ic_menu_sort_by_size); 
-        menu.add(0, FILTER_OPTIONS, 3, R.string.filter)
-                .setIcon(R.drawable.ic_menu_filter_settings);
         return true;
     }
     
@@ -1932,7 +1948,6 @@
         if (mFirst) {
             menu.findItem(SORT_ORDER_ALPHA).setVisible(mSortOrder != SORT_ORDER_ALPHA);
             menu.findItem(SORT_ORDER_SIZE).setVisible(mSortOrder != SORT_ORDER_SIZE);
-            menu.findItem(FILTER_OPTIONS).setVisible(true);
             return true;
         }
         return false;
@@ -1943,20 +1958,6 @@
         int menuId = item.getItemId();
         if ((menuId == SORT_ORDER_ALPHA) || (menuId == SORT_ORDER_SIZE)) {
             sendMessageToHandler(REORDER_LIST, menuId);
-        } else if (menuId == FILTER_OPTIONS) {
-            // Pick up the selection value from the list of added choice items.
-            int selection = mFilterApps - MENU_OPTIONS_BASE;
-            if (mAlertDlg == null) {
-                mAlertDlg = new AlertDialog.Builder(this).
-                        setTitle(R.string.filter_dlg_title).
-                        setNeutralButton(R.string.cancel, this).
-                        setSingleChoiceItems(new CharSequence[] {getText(R.string.filter_apps_all),
-                                getText(R.string.filter_apps_running),
-                                getText(R.string.filter_apps_third_party)},
-                                selection, this).
-                        create();
-            }
-            mAlertDlg.show();
         }
         return true;
     }
@@ -1973,22 +1974,22 @@
         finish();
     }
 
-    public void onClick(DialogInterface dialog, int which) {
+    public View createTabContent(String tag) {
+        return mRootView;
+    }
+
+    public void onTabChanged(String tabId) {
         int newOption;
-        switch (which) {
-        // Make sure that values of 0, 1, 2 match options all, running, third_party when
-        // created via the AlertDialog.Builder
-        case FILTER_APPS_ALL:
-            break;
-        case FILTER_APPS_RUNNING:
-            break;
-        case FILTER_APPS_THIRD_PARTY:
-            break;
-        default:
+        if (TAB_DOWNLOADED.equalsIgnoreCase(tabId)) {
+            newOption = FILTER_APPS_THIRD_PARTY;
+        } else if (TAB_RUNNING.equalsIgnoreCase(tabId)) {
+            newOption = FILTER_APPS_RUNNING;
+        } else if (TAB_ALL.equalsIgnoreCase(tabId)) {
+            newOption = FILTER_APPS_ALL;
+        } else {
+            // Invalid option. Do nothing
             return;
         }
-        newOption = which;
-        mAlertDlg.dismiss();
         sendMessageToHandler(REORDER_LIST, newOption);
     }
 }
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index fd4a411..d33e1e8 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -53,7 +53,7 @@
     private View mFinalView;
     private Button mFinalButton;
 
-    /** 
+    /**
      * The user has gone through the multiple confirmation, so now we go ahead
      * and invoke the Checkin Service to reset the device to its factory-default
      * state (rebooting in the process).
@@ -65,7 +65,7 @@
                     return;
                 }
 
-                ICheckinService service = 
+                ICheckinService service =
                         ICheckinService.Stub.asInterface(ServiceManager.getService("checkin"));
                 if (service != null) {
                     try {
@@ -159,7 +159,7 @@
      * click in order to initiate a confirmation sequence.  This method is
      * called from various other points in the code to reset the activity to
      * this base state.
-     * 
+     *
      * <p>Reinflating views from resources is expensive and prevents us from
      * caching widget pointers, so we use a single-inflate pattern:  we lazy-
      * inflate each view, caching all of the widget pointers we'll need at the
@@ -184,7 +184,7 @@
         mInitialView = null;
         mFinalView = null;
         mInflater = LayoutInflater.from(this);
-        mLockUtils = new LockPatternUtils(getContentResolver());
+        mLockUtils = new LockPatternUtils(this);
 
         establishInitialState();
     }
diff --git a/src/com/android/settings/MediaFormat.java b/src/com/android/settings/MediaFormat.java
index e0d9af6..40ae0d7 100644
--- a/src/com/android/settings/MediaFormat.java
+++ b/src/com/android/settings/MediaFormat.java
@@ -68,7 +68,7 @@
                         IMountService.Stub.asInterface(ServiceManager.getService("mount"));
                 if (service != null) {
                     try {
-                        service.formatMedia(Environment.getExternalStorageDirectory().toString());
+                        service.formatVolume(Environment.getExternalStorageDirectory().toString());
                     } catch (android.os.RemoteException e) {
                         // Intentionally blank - there's nothing we can do here
                         Log.w("MediaFormat", "Unable to invoke IMountService.formatMedia()");
@@ -147,7 +147,7 @@
      * click in order to initiate a confirmation sequence.  This method is
      * called from various other points in the code to reset the activity to
      * this base state.
-     * 
+     *
      * <p>Reinflating views from resources is expensive and prevents us from
      * caching widget pointers, so we use a single-inflate pattern:  we lazy-
      * inflate each view, caching all of the widget pointers we'll need at the
@@ -172,7 +172,7 @@
         mInitialView = null;
         mFinalView = null;
         mInflater = LayoutInflater.from(this);
-        mLockUtils = new LockPatternUtils(getContentResolver());
+        mLockUtils = new LockPatternUtils(this);
 
         establishInitialState();
     }
diff --git a/src/com/android/settings/PrivacySettings.java b/src/com/android/settings/PrivacySettings.java
index 2edb328..611af04 100644
--- a/src/com/android/settings/PrivacySettings.java
+++ b/src/com/android/settings/PrivacySettings.java
@@ -45,7 +45,7 @@
     private static final String PREFS_USE_LOCATION = "use_location";
 
     // Vendor specific
-    private static final String GSETTINGS_PROVIDER = "com.google.android.providers.settings";
+    private static final String GSETTINGS_PROVIDER = "com.google.settings";
     private static final String LOCATION_CATEGORY = "location_category";
     private static final String SETTINGS_CATEGORY = "settings_category";
     private static final String USE_LOCATION = "use_location";
@@ -69,11 +69,7 @@
         mBackup = (CheckBoxPreference) getPreferenceScreen().findPreference(BACKUP_SETTINGS);
 
         // Vendor specific
-        try {
-            if (mUseLocation != null) {
-                getPackageManager().getPackageInfo(GSETTINGS_PROVIDER, 0);
-            }
-        } catch (NameNotFoundException nnfe) {
+        if (getPackageManager().resolveContentProvider(GSETTINGS_PROVIDER, 0) == null) {
             getPreferenceScreen().removePreference(findPreference(LOCATION_CATEGORY));
             getPreferenceScreen().removePreference(findPreference(SETTINGS_CATEGORY));
         }
diff --git a/src/com/android/settings/RadioInfo.java b/src/com/android/settings/RadioInfo.java
index ce236fd..f0fcdd7 100644
--- a/src/com/android/settings/RadioInfo.java
+++ b/src/com/android/settings/RadioInfo.java
@@ -20,6 +20,8 @@
 import android.app.AlertDialog;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
 import android.content.SharedPreferences;
 import android.content.res.Resources;
 import android.net.Uri;
@@ -57,8 +59,7 @@
 import com.android.internal.telephony.PhoneFactory;
 import com.android.internal.telephony.PhoneStateIntentReceiver;
 import com.android.internal.telephony.TelephonyProperties;
-import com.android.internal.telephony.gsm.GSMPhone;
-import com.android.internal.telephony.gsm.PdpConnection;
+import com.android.internal.telephony.gsm.GsmDataConnection;
 
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
@@ -72,6 +73,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import android.util.Log;
+
 public class RadioInfo extends Activity {
     private final String TAG = "phone";
 
@@ -83,8 +86,6 @@
     private static final int EVENT_QUERY_PREFERRED_TYPE_DONE = 1000;
     private static final int EVENT_SET_PREFERRED_TYPE_DONE = 1001;
     private static final int EVENT_QUERY_NEIGHBORING_CIDS_DONE = 1002;
-    private static final int EVENT_SET_QXDMLOG_DONE = 1003;
-    private static final int EVENT_SET_CIPHER_DONE = 1004;
     private static final int EVENT_QUERY_SMSC_DONE = 1005;
     private static final int EVENT_UPDATE_SMSC_DONE = 1006;
 
@@ -94,7 +95,9 @@
     private static final int MENU_ITEM_VIEW_SDN     = 3;
     private static final int MENU_ITEM_GET_PDP_LIST = 4;
     private static final int MENU_ITEM_TOGGLE_DATA  = 5;
-    private static final int MENU_ITEM_TOGGLE_DATA_ON_BOOT = 6;
+
+    static final String ENABLE_DATA_STR = "Enable data connection";
+    static final String DISABLE_DATA_STR = "Disable data connection";
 
     private TextView mDeviceId; //DeviceId is the IMEI in GSM and the MEID in CDMA
     private TextView number;
@@ -119,16 +122,14 @@
     private TextView mPingIpAddr;
     private TextView mPingHostname;
     private TextView mHttpClientTest;
-    private TextView cipherState;
     private TextView dnsCheckState;
     private EditText smsc;
     private Button radioPowerButton;
-    private Button qxdmLogButton;
-    private Button cipherToggleButton;
     private Button dnsCheckToggleButton;
     private Button pingTestButton;
     private Button updateSmscButton;
     private Button refreshSmscButton;
+    private Button oemInfoButton;
     private Spinner preferredNetworkType;
 
     private TelephonyManager mTelephonyManager;
@@ -136,11 +137,6 @@
     private PhoneStateIntentReceiver mPhoneStateReceiver;
     private INetStatService netstat;
 
-    private OemCommands mOem = null;
-    private boolean mQxdmLogEnabled;
-    // The requested cipher state
-    private boolean mCipherOn;
-
     private String mPingIpAddrResult;
     private String mPingHostnameResult;
     private String mHttpClientTestResult;
@@ -220,22 +216,6 @@
                         mNeighboringCids.setText("unknown");
                     }
                     break;
-                case EVENT_SET_QXDMLOG_DONE:
-                    ar= (AsyncResult) msg.obj;
-                    if (ar.exception == null) {
-                        mQxdmLogEnabled = !mQxdmLogEnabled;
-
-                        updateQxdmState(mQxdmLogEnabled);
-                        displayQxdmEnableResult();
-                    }
-                    break;
-                case EVENT_SET_CIPHER_DONE:
-                    ar= (AsyncResult) msg.obj;
-                    if (ar.exception == null) {
-                        setCiphPref(mCipherOn);
-                    }
-                    updateCiphState();
-                    break;
                 case EVENT_QUERY_SMSC_DONE:
                     ar= (AsyncResult) msg.obj;
                     if (ar.exception != null) {
@@ -258,116 +238,6 @@
         }
     };
 
-    static private class OemCommands {
-
-        public static final int OEM_QXDM_SDLOG_DEFAULT_FILE_SIZE = 32;
-        public static final int OEM_QXDM_SDLOG_DEFAULT_MASK = 0;
-        public static final int OEM_QXDM_SDLOG_DEFAULT_MAX_INDEX = 8;
-
-        static final int SIZE_OF_INT = 4;
-        static final int OEM_FEATURE_ENABLE = 1;
-        static final int OEM_FEATURE_DISABLE = 0;
-        static final int OEM_SIMPE_FEAUTURE_LEN = 1;
-
-        static final int OEM_QXDM_SDLOG_FUNCTAG = 0x00010000;
-        static final int OEM_QXDM_SDLOG_LEN = 4;
-        static final int OEM_PS_AUTO_ATTACH_FUNCTAG = 0x00020000;
-        static final int OEM_CIPHERING_FUNCTAG = 0x00020001;
-
-        /**
-         * The OEM interface to store QXDM to SD.
-         *
-         * To start/stop logging QXDM logs to SD card, use tag
-         * OEM_RIL_HOOK_QXDM_SD_LOG_SETUP 0x00010000
-         *
-         * "data" is a const oem_ril_hook_qxdm_sdlog_setup_data_st *
-         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->head.func_tag
-         * should be OEM_RIL_HOOK_QXDM_SD_LOG_SETUP
-         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->head.len
-         * should be "sizeof(unsigned int) * 4"
-         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->mode
-         * could be 0 for 'stop logging', or 1 for 'start logging'
-         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->log_file_size
-         * will assign the size of each log file, and it could be a value between
-         * 1 and 512 (in megabytes, default value is recommended to set as 32).
-         * This value will be ignored when mode == 0.
-         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->log_mask will
-         * assign the rule to filter logs, and it is a bitmask (bit0 is for MsgAll,
-         * bit1 is for LogAll, and bit2 is for EventAll) recommended to be set as 0
-         * by default. This value will be ignored when mode == 0.
-         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->log_max_fileindex
-         * set the how many logfiles will storted before roll over. This value will
-         * be ignored when mode == 0.
-         *
-         * "response" is NULL
-         *
-         * typedef struct _oem_ril_hook_raw_head_st {
-         *      unsigned int func_tag;
-         *      unsigned int len;
-         * } oem_ril_hook_raw_head_st;
-         *
-         * typedef struct _oem_ril_hook_qxdm_sdlog_setup_data_st {
-         *      oem_ril_hook_raw_head_st head;
-         *      unsigned int mode;
-         *      unsigned int log_file_size;
-         *      unsigned int log_mask;
-         *      unsigned int log_max_fileindex;
-         * } oem_ril_hook_qxdm_sdlog_setup_data_st;
-         *
-         * @param enable set true to start logging QXDM in SD card
-         * @param fileSize is the log file size in MB
-         * @param mask is the log mask to filter
-         * @param maxIndex is the maximum roll-over file number
-         * @return byteArray to use in RIL RAW command
-         */
-        byte[] getQxdmSdlogData(boolean enable, int fileSize, int mask, int maxIndex) {
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
-            DataOutputStream dos = new DataOutputStream(bos);
-            try {
-                writeIntLittleEndian(dos, OEM_QXDM_SDLOG_FUNCTAG);
-                writeIntLittleEndian(dos, OEM_QXDM_SDLOG_LEN * SIZE_OF_INT);
-                writeIntLittleEndian(dos, enable ?
-                        OEM_FEATURE_ENABLE : OEM_FEATURE_DISABLE);
-                writeIntLittleEndian(dos, fileSize);
-                writeIntLittleEndian(dos, mask);
-                writeIntLittleEndian(dos, maxIndex);
-            } catch (IOException e) {
-                return null;
-            }
-            return bos.toByteArray();
-        }
-
-        byte[] getPsAutoAttachData(boolean enable) {
-            return getSimpleFeatureData(OEM_PS_AUTO_ATTACH_FUNCTAG, enable);
-        }
-
-        byte[] getCipheringData(boolean enable) {
-            return getSimpleFeatureData(OEM_CIPHERING_FUNCTAG, enable);
-        }
-
-        private byte[] getSimpleFeatureData(int tag, boolean enable) {
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
-            DataOutputStream dos = new DataOutputStream(bos);
-            try {
-                writeIntLittleEndian(dos, tag);
-                writeIntLittleEndian(dos, OEM_SIMPE_FEAUTURE_LEN * SIZE_OF_INT);
-                writeIntLittleEndian(dos, enable ?
-                        OEM_FEATURE_ENABLE : OEM_FEATURE_DISABLE);
-            } catch (IOException e) {
-                return null;
-            }
-            return bos.toByteArray();
-        }
-
-        private void writeIntLittleEndian(DataOutputStream dos, int val)
-                throws IOException {
-            dos.writeByte(val);
-            dos.writeByte(val >> 8);
-            dos.writeByte(val >> 16);
-            dos.writeByte(val >> 24);
-        }
-    }
-
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
@@ -398,7 +268,6 @@
         sentSinceReceived = (TextView) findViewById(R.id.sentSinceReceived);
         sent = (TextView) findViewById(R.id.sent);
         received = (TextView) findViewById(R.id.received);
-        cipherState = (TextView) findViewById(R.id.ciphState);
         smsc = (EditText) findViewById(R.id.smsc);
         dnsCheckState = (TextView) findViewById(R.id.dnsCheckState);
 
@@ -416,11 +285,6 @@
         radioPowerButton = (Button) findViewById(R.id.radio_power);
         radioPowerButton.setOnClickListener(mPowerButtonHandler);
 
-        qxdmLogButton = (Button) findViewById(R.id.qxdm_log);
-        qxdmLogButton.setOnClickListener(mQxdmButtonHandler);
-
-        cipherToggleButton = (Button) findViewById(R.id.ciph_toggle);
-        cipherToggleButton.setOnClickListener(mCipherButtonHandler);
         pingTestButton = (Button) findViewById(R.id.ping_test);
         pingTestButton.setOnClickListener(mPingButtonHandler);
         updateSmscButton = (Button) findViewById(R.id.update_smsc);
@@ -430,14 +294,20 @@
         dnsCheckToggleButton = (Button) findViewById(R.id.dns_check_toggle);
         dnsCheckToggleButton.setOnClickListener(mDnsCheckButtonHandler);
 
+        oemInfoButton = (Button) findViewById(R.id.oem_info);
+        oemInfoButton.setOnClickListener(mOemInfoButtonHandler);
+        PackageManager pm = getPackageManager();
+        Intent oemInfoIntent = new Intent("com.android.settings.OEM_RADIO_INFO");
+        List<ResolveInfo> oemInfoIntentList = pm.queryIntentActivities(oemInfoIntent, 0);
+        if (oemInfoIntentList.size() == 0) {
+            oemInfoButton.setEnabled(false);
+        }
+
         mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler);
         mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED);
         mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED);
         mPhoneStateReceiver.notifyPhoneCallState(EVENT_PHONE_STATE_CHANGED);
 
-        updateQxdmState(null);
-        mOem = new OemCommands();
-
         phone.getPreferredNetworkType(
                 mHandler.obtainMessage(EVENT_QUERY_PREFERRED_TYPE_DONE));
         phone.getNeighboringCids(
@@ -462,9 +332,7 @@
         updateDataStats();
         updateDataStats2();
         updatePowerState();
-        updateQxdmState(null);
         updateProperties();
-        updateCiphState();
         updateDnsCheckState();
 
         Log.i(TAG, "[RadioInfo] onResume: register phone & data intents");
@@ -502,14 +370,10 @@
         menu.add(1, MENU_ITEM_GET_PDP_LIST,
                 0, R.string.radioInfo_menu_getPDP).setOnMenuItemClickListener(mGetPdpList);
         menu.add(1, MENU_ITEM_TOGGLE_DATA,
-                0, R.string.radioInfo_menu_disableData).setOnMenuItemClickListener(mToggleData);
-        menu.add(1, MENU_ITEM_TOGGLE_DATA_ON_BOOT,
-                0, R.string.radioInfo_menu_disableDataOnBoot).setOnMenuItemClickListener(
-                mToggleDataOnBoot);
+                0, DISABLE_DATA_STR).setOnMenuItemClickListener(mToggleData);
         return true;
     }
 
-
     @Override
     public boolean onPrepareOptionsMenu(Menu menu) {
         // Get the TOGGLE DATA menu item in the right state.
@@ -520,26 +384,16 @@
         switch (state) {
             case TelephonyManager.DATA_CONNECTED:
             case TelephonyManager.DATA_SUSPENDED:
-                item.setTitle(R.string.radioInfo_menu_disableData);
+                item.setTitle(DISABLE_DATA_STR);
                 break;
             case TelephonyManager.DATA_DISCONNECTED:
-                item.setTitle(R.string.radioInfo_menu_enableData);
+                item.setTitle(ENABLE_DATA_STR);
                 break;
             default:
                 visible = false;
                 break;
         }
         item.setVisible(visible);
-
-        // Get the toggle-data-on-boot menu item in the right state.
-        item = menu.findItem(MENU_ITEM_TOGGLE_DATA_ON_BOOT);
-        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
-        boolean value = sp.getBoolean(GSMPhone.DATA_DISABLED_ON_BOOT_KEY, false);
-        if (value) {
-            item.setTitle(R.string.radioInfo_menu_enableDataOnBoot);
-        } else {
-            item.setTitle(R.string.radioInfo_menu_disableDataOnBoot);
-        }
         return true;
     }
 
@@ -554,42 +408,6 @@
         radioPowerButton.setText(buttonText);
     }
 
-    private void updateQxdmState(Boolean newQxdmStatus) {
-        SharedPreferences sp =
-          PreferenceManager.getDefaultSharedPreferences(phone.getContext());
-        mQxdmLogEnabled = sp.getBoolean("qxdmstatus", false);
-        // This is called from onCreate, onResume, and the handler when the status
-        // is updated.
-        if (newQxdmStatus != null) {
-            SharedPreferences.Editor editor = sp.edit();
-            editor.putBoolean("qxdmstatus", newQxdmStatus);
-            editor.commit();
-            mQxdmLogEnabled = newQxdmStatus;
-        }
-
-        String buttonText = mQxdmLogEnabled ?
-                            getString(R.string.turn_off_qxdm) :
-                            getString(R.string.turn_on_qxdm);
-        qxdmLogButton.setText(buttonText);
-    }
-
-    private void setCiphPref(boolean value) {
-        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
-        SharedPreferences.Editor editor = sp.edit();
-        editor.putBoolean(GSMPhone.CIPHERING_KEY, value);
-        editor.commit();
-    }
-
-    private boolean getCiphPref() {
-        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
-        boolean ret = sp.getBoolean(GSMPhone.CIPHERING_KEY, true);
-        return ret;
-    }
-
-    private void updateCiphState() {
-        cipherState.setText(getCiphPref() ? "Ciphering ON" : "Ciphering OFF");
-    }
-
     private void updateDnsCheckState() {
         dnsCheckState.setText(phone.isDnsCheckDisabled() ?
                 "0.0.0.0 allowed" :"0.0.0.0 not allowed");
@@ -942,8 +760,8 @@
         List<DataConnection> dcs = phone.getCurrentDataConnectionList();
 
         for (DataConnection dc : dcs) {
-            sb.append("    State: ").append(dc.getState().toString()).append("\n");
-            if (dc.getState().isActive()) {
+            sb.append("    State: ").append(dc.getStateAsString()).append("\n");
+            if (dc.isActive()) {
                 long timeElapsed =
                     (System.currentTimeMillis() - dc.getConnectionTime())/1000;
                 sb.append("    connected at ")
@@ -951,8 +769,8 @@
                   .append(" and elapsed ")
                   .append(DateUtils.formatElapsedTime(timeElapsed));
 
-                if (dc instanceof PdpConnection) {
-                    PdpConnection pdp = (PdpConnection)dc;
+                if (dc instanceof GsmDataConnection) {
+                    GsmDataConnection pdp = (GsmDataConnection)dc;
                     sb.append("\n    to ")
                       .append(pdp.getApn().toString());
                 }
@@ -966,14 +784,14 @@
                 if (dns != null) {
                     sb.append("\ndns: ").append(dns[0]).append(", ").append(dns[1]);
                 }
-            } else if (dc.getState().isInactive()) {
+            } else if (dc.isInactive()) {
                 sb.append("    disconnected with last try at ")
                   .append(DateUtils.timeString(dc.getLastFailTime()))
                   .append("\n    fail because ")
                   .append(dc.getLastFailCause().toString());
             } else {
-                if (dc instanceof PdpConnection) {
-                    PdpConnection pdp = (PdpConnection)dc;
+                if (dc instanceof GsmDataConnection) {
+                    GsmDataConnection pdp = (GsmDataConnection)dc;
                     sb.append("    is connecting to ")
                       .append(pdp.getApn().toString());
                 } else {
@@ -987,19 +805,6 @@
         disconnects.setText(sb.toString());
     }
 
-    private void displayQxdmEnableResult() {
-        String status = mQxdmLogEnabled ? "Start QXDM Log" : "Stop QXDM Log";
-
-        new AlertDialog.Builder(this).setMessage(status).show();
-
-        mHandler.postDelayed(
-                new Runnable() {
-                    public void run() {
-                        finish();
-                    }
-                }, 2000);
-    }
-
     private MenuItem.OnMenuItemClickListener mViewADNCallback = new MenuItem.OnMenuItemClickListener() {
         public boolean onMenuItemClick(MenuItem item) {
             Intent intent = new Intent(Intent.ACTION_VIEW);
@@ -1046,24 +851,18 @@
         }
     };
 
-    private void toggleDataDisabledOnBoot() {
-        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
-        SharedPreferences.Editor editor = sp.edit();
-        boolean value = sp.getBoolean(GSMPhone.DATA_DISABLED_ON_BOOT_KEY, false);
-        editor.putBoolean(GSMPhone.DATA_DISABLED_ON_BOOT_KEY, !value);
-        byte[] data = mOem.getPsAutoAttachData(value);
-        if (data == null) {
-            // don't commit
-            return;
-        }
-
-        editor.commit();
-        phone.invokeOemRilRequestRaw(data, null);
-    }
-
-    private MenuItem.OnMenuItemClickListener mToggleDataOnBoot = new MenuItem.OnMenuItemClickListener() {
+    private MenuItem.OnMenuItemClickListener mGetPdpList = new MenuItem.OnMenuItemClickListener() {
         public boolean onMenuItemClick(MenuItem item) {
-            toggleDataDisabledOnBoot();
+            phone.getDataCallList(null);
+            return true;
+        }
+    };
+
+    private MenuItem.OnMenuItemClickListener mSelectBandCallback = new MenuItem.OnMenuItemClickListener() {
+        public boolean onMenuItemClick(MenuItem item) {
+            Intent intent = new Intent();
+            intent.setClass(RadioInfo.this, BandMode.class);
+            startActivity(intent);
             return true;
         }
     };
@@ -1086,22 +885,6 @@
         }
     };
 
-    private MenuItem.OnMenuItemClickListener mGetPdpList = new MenuItem.OnMenuItemClickListener() {
-        public boolean onMenuItemClick(MenuItem item) {
-            phone.getDataCallList(null);
-            return true;
-        }
-    };
-
-    private MenuItem.OnMenuItemClickListener mSelectBandCallback = new MenuItem.OnMenuItemClickListener() {
-        public boolean onMenuItemClick(MenuItem item) {
-            Intent intent = new Intent();
-            intent.setClass(RadioInfo.this, BandMode.class);
-            startActivity(intent);
-            return true;
-        }
-    };
-
     OnClickListener mPowerButtonHandler = new OnClickListener() {
         public void onClick(View v) {
             //log("toggle radio power: currently " + (isRadioOn()?"on":"off"));
@@ -1109,20 +892,6 @@
         }
     };
 
-    OnClickListener mCipherButtonHandler = new OnClickListener() {
-        public void onClick(View v) {
-            mCipherOn = !getCiphPref();
-            byte[] data = mOem.getCipheringData(mCipherOn);
-
-            if (data == null)
-                return;
-
-            cipherState.setText("Setting...");
-            phone.invokeOemRilRequestRaw(data,
-                    mHandler.obtainMessage(EVENT_SET_CIPHER_DONE));
-        }
-    };
-
     OnClickListener mDnsCheckButtonHandler = new OnClickListener() {
         public void onClick(View v) {
             phone.disableDnsCheck(!phone.isDnsCheckDisabled());
@@ -1130,6 +899,19 @@
         }
     };
 
+    OnClickListener mOemInfoButtonHandler = new OnClickListener() {
+        public void onClick(View v) {
+            Intent intent = new Intent("com.android.settings.OEM_RADIO_INFO");
+            try {
+                startActivity(intent);
+            } catch (android.content.ActivityNotFoundException ex) {
+                Log.d(TAG, "OEM-specific Info/Settings Activity Not Found : " + ex);
+                // If the activity does not exist, there are no OEM
+                // settings, and so we can just do nothing...
+            }
+        }
+    };
+
     OnClickListener mPingButtonHandler = new OnClickListener() {
         public void onClick(View v) {
             updatePingState();
@@ -1150,22 +932,6 @@
         }
     };
 
-    OnClickListener mQxdmButtonHandler = new OnClickListener() {
-        public void onClick(View v) {
-            byte[] data = mOem.getQxdmSdlogData(
-                    !mQxdmLogEnabled,
-                    mOem.OEM_QXDM_SDLOG_DEFAULT_FILE_SIZE,
-                    mOem.OEM_QXDM_SDLOG_DEFAULT_MASK,
-                    mOem.OEM_QXDM_SDLOG_DEFAULT_MAX_INDEX);
-
-            if (data == null)
-                return;
-
-            phone.invokeOemRilRequestRaw(data,
-                    mHandler.obtainMessage(EVENT_SET_QXDMLOG_DONE));
-        }
-    };
-
     AdapterView.OnItemSelectedListener
             mPreferredNetworkHandler = new AdapterView.OnItemSelectedListener() {
         public void onItemSelected(AdapterView parent, View v, int pos, long id) {
diff --git a/src/com/android/settings/RingerVolumePreference.java b/src/com/android/settings/RingerVolumePreference.java
index 0d01965..a546818 100644
--- a/src/com/android/settings/RingerVolumePreference.java
+++ b/src/com/android/settings/RingerVolumePreference.java
@@ -39,16 +39,28 @@
     private static final String TAG = "RingerVolumePreference";
 
     private CheckBox mNotificationsUseRingVolumeCheckbox;
-    private SeekBarVolumizer mNotificationSeekBarVolumizer;
+    private SeekBarVolumizer [] mSeekBarVolumizer;
+    private static final int[] SEEKBAR_ID = new int[] {
+        R.id.notification_volume_seekbar,
+        R.id.media_volume_seekbar,
+        R.id.alarm_volume_seekbar
+    };
+    private static final int[] SEEKBAR_TYPE = new int[] {
+        AudioManager.STREAM_NOTIFICATION,
+        AudioManager.STREAM_MUSIC,
+        AudioManager.STREAM_ALARM
+    };
+    //private SeekBarVolumizer mNotificationSeekBarVolumizer;
     private TextView mNotificationVolumeTitle;
-    
+
     public RingerVolumePreference(Context context, AttributeSet attrs) {
         super(context, attrs);
 
         // The always visible seekbar is for ring volume
         setStreamType(AudioManager.STREAM_RING);
-        
+
         setDialogLayoutResource(R.layout.preference_dialog_ringervolume);
+        mSeekBarVolumizer = new SeekBarVolumizer[SEEKBAR_ID.length];
     }
 
     @Override
@@ -61,13 +73,14 @@
         mNotificationsUseRingVolumeCheckbox.setChecked(Settings.System.getInt(
                 getContext().getContentResolver(),
                 Settings.System.NOTIFICATIONS_USE_RING_VOLUME, 1) == 1);
-        
-        final SeekBar seekBar = (SeekBar) view.findViewById(R.id.notification_volume_seekbar);
-        mNotificationSeekBarVolumizer = new SeekBarVolumizer(getContext(), seekBar,
-                AudioManager.STREAM_NOTIFICATION);
-        
+      
+        for (int i = 0; i < SEEKBAR_ID.length; i++) {
+            SeekBar seekBar = (SeekBar) view.findViewById(SEEKBAR_ID[i]);
+            mSeekBarVolumizer[i] = new SeekBarVolumizer(getContext(), seekBar,
+                SEEKBAR_TYPE[i]);
+        }
+
         mNotificationVolumeTitle = (TextView) view.findViewById(R.id.notification_volume_title);
-        
         setNotificationVolumeVisibility(!mNotificationsUseRingVolumeCheckbox.isChecked());
     }
 
@@ -75,10 +88,11 @@
     protected void onDialogClosed(boolean positiveResult) {
         super.onDialogClosed(positiveResult);
         
-        if (!positiveResult && mNotificationSeekBarVolumizer != null) {
-            mNotificationSeekBarVolumizer.revertVolume();
-        }
-        
+        if (!positiveResult) {
+            for (SeekBarVolumizer vol : mSeekBarVolumizer) {
+                if (vol != null) vol.revertVolume();
+            }
+        }        
         cleanup();
     }
 
@@ -107,29 +121,28 @@
     @Override
     protected void onSampleStarting(SeekBarVolumizer volumizer) {
         super.onSampleStarting(volumizer);
-        
-        if (mNotificationSeekBarVolumizer != null && volumizer != mNotificationSeekBarVolumizer) {
-            mNotificationSeekBarVolumizer.stopSample();
+        for (SeekBarVolumizer vol : mSeekBarVolumizer) {
+            if (vol != volumizer) vol.stopSample();
         }
     }
 
     private void setNotificationVolumeVisibility(boolean visible) {
-        if (mNotificationSeekBarVolumizer != null) {
-            mNotificationSeekBarVolumizer.getSeekBar().setVisibility(
-                    visible ? View.VISIBLE : View.GONE);
-            mNotificationVolumeTitle.setVisibility(visible ? View.VISIBLE : View.GONE);
-        }
+        mSeekBarVolumizer[0].getSeekBar().setVisibility(
+                visible ? View.VISIBLE : View.GONE);
+        mNotificationVolumeTitle.setVisibility(visible ? View.VISIBLE : View.GONE);
     }
-    
+
     private void cleanup() {
-        if (mNotificationSeekBarVolumizer != null) {
-            Dialog dialog = getDialog();
-            if (dialog != null && dialog.isShowing()) {
-                // Stopped while dialog was showing, revert changes
-                mNotificationSeekBarVolumizer.revertVolume();
+        for (int i = 0; i < SEEKBAR_ID.length; i++) {
+            if (mSeekBarVolumizer[i] != null) {
+                Dialog dialog = getDialog();
+                if (dialog != null && dialog.isShowing()) {
+                    // Stopped while dialog was showing, revert changes
+                    mSeekBarVolumizer[i].revertVolume();
+                }
+                mSeekBarVolumizer[i].stop();
+                mSeekBarVolumizer[i] = null;
             }
-            mNotificationSeekBarVolumizer.stop();
-            mNotificationSeekBarVolumizer = null;
         }
     }
 
@@ -142,8 +155,12 @@
         }
 
         final SavedState myState = new SavedState(superState);
-        if (mNotificationSeekBarVolumizer != null) {
-            mNotificationSeekBarVolumizer.onSaveInstanceState(myState.getVolumeStore());
+        VolumeStore[] volumeStore = myState.getVolumeStore(SEEKBAR_ID.length);
+        for (int i = 0; i < SEEKBAR_ID.length; i++) {
+            SeekBarVolumizer vol = mSeekBarVolumizer[i];
+            if (vol != null) {
+                vol.onSaveInstanceState(volumeStore[i]);
+            }
         }
         return myState;
     }
@@ -158,28 +175,44 @@
 
         SavedState myState = (SavedState) state;
         super.onRestoreInstanceState(myState.getSuperState());
-        if (mNotificationSeekBarVolumizer != null) {
-            mNotificationSeekBarVolumizer.onRestoreInstanceState(myState.getVolumeStore());
+        VolumeStore[] volumeStore = myState.getVolumeStore(SEEKBAR_ID.length);
+        for (int i = 0; i < SEEKBAR_ID.length; i++) {
+            SeekBarVolumizer vol = mSeekBarVolumizer[i];
+            if (vol != null) {
+                vol.onRestoreInstanceState(volumeStore[i]);
+            }
         }
     }
 
     private static class SavedState extends BaseSavedState {
-        VolumeStore mVolumeStore = new VolumeStore();
+        VolumeStore [] mVolumeStore;
 
         public SavedState(Parcel source) {
             super(source);
-            mVolumeStore.volume = source.readInt();
-            mVolumeStore.originalVolume = source.readInt();
+            mVolumeStore = new VolumeStore[SEEKBAR_ID.length];
+            for (int i = 0; i < SEEKBAR_ID.length; i++) {
+                mVolumeStore[i] = new VolumeStore();
+                mVolumeStore[i].volume = source.readInt();
+                mVolumeStore[i].originalVolume = source.readInt();
+            }
         }
 
         @Override
         public void writeToParcel(Parcel dest, int flags) {
             super.writeToParcel(dest, flags);
-            dest.writeInt(mVolumeStore.volume);
-            dest.writeInt(mVolumeStore.originalVolume);
+            for (int i = 0; i < SEEKBAR_ID.length; i++) {
+                dest.writeInt(mVolumeStore[i].volume);
+                dest.writeInt(mVolumeStore[i].originalVolume);
+            }
         }
 
-        VolumeStore getVolumeStore() {
+        VolumeStore[] getVolumeStore(int count) {
+            if (mVolumeStore == null || mVolumeStore.length != count) {
+                mVolumeStore = new VolumeStore[count];
+                for (int i = 0; i < count; i++) {
+                    mVolumeStore[i] = new VolumeStore();
+                }
+            }
             return mVolumeStore;
         }
 
diff --git a/src/com/android/settings/SdCardSettings.java b/src/com/android/settings/SdCardSettings.java
index 67f3550..75f02e7 100644
--- a/src/com/android/settings/SdCardSettings.java
+++ b/src/com/android/settings/SdCardSettings.java
@@ -169,7 +169,7 @@
     OnClickListener mUnmountButtonHandler = new OnClickListener() {
         public void onClick(View v) {
             try {
-                mMountService.unmountMedia(Environment.getExternalStorageDirectory().toString());
+                mMountService.unmountVolume(Environment.getExternalStorageDirectory().toString());
             } catch (RemoteException ex) {
             }
         }
@@ -178,7 +178,7 @@
     OnClickListener mFormatButtonHandler = new OnClickListener() {
         public void onClick(View v) {
             try {
-                mMountService.formatMedia(Environment.getExternalStorageDirectory().toString());
+                mMountService.formatVolume(Environment.getExternalStorageDirectory().toString());
             } catch (RemoteException ex) {
             }
         }
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index fcacccc..5c44f27 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -17,44 +17,42 @@
 package com.android.settings;
 
 
+import java.util.Observable;
+import java.util.Observer;
+
 import android.app.Activity;
 import android.app.AlertDialog;
+import android.app.DevicePolicyManager;
 import android.app.Dialog;
 import android.content.ContentQueryMap;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.pm.PackageManager.NameNotFoundException;
 import android.database.Cursor;
 import android.location.LocationManager;
 import android.os.Bundle;
+import android.os.ICheckinService;
+import android.os.ServiceManager;
+import android.os.SystemProperties;
 import android.preference.CheckBoxPreference;
-import android.preference.EditTextPreference;
+import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceCategory;
-import android.preference.PreferenceGroup;
+import android.preference.PreferenceManager;
 import android.preference.PreferenceScreen;
+import android.preference.Preference.OnPreferenceChangeListener;
 import android.provider.Settings;
 import android.security.Credentials;
 import android.security.KeyStore;
-import android.text.Html;
-import android.text.TextUtils;
-import android.text.method.LinkMovementMethod;
+import android.telephony.TelephonyManager;
 import android.util.Log;
 import android.view.View;
 import android.widget.TextView;
 import android.widget.Toast;
 
 import com.android.internal.widget.LockPatternUtils;
-import android.telephony.TelephonyManager;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Observable;
-import java.util.Observer;
 
 /**
  * Gesture lock pattern settings.
@@ -62,20 +60,28 @@
 public class SecuritySettings extends PreferenceActivity {
 
     // Lock Settings
+    private static final String PACKAGE = "com.android.settings";
+    private static final String LOCK_PATTERN_TUTORIAL = PACKAGE + ".ChooseLockPatternTutorial";
+    private static final String ICC_LOCK_SETTINGS = PACKAGE + ".IccLockSettings";
+    private static final String CHOOSE_LOCK_PATTERN = PACKAGE + ".ChooseLockPattern";
+    private static final String CHOOSE_LOCK_PIN = PACKAGE + ".ChooseLockPassword";
 
     private static final String KEY_LOCK_ENABLED = "lockenabled";
     private static final String KEY_VISIBLE_PATTERN = "visiblepattern";
     private static final String KEY_TACTILE_FEEDBACK_ENABLED = "tactilefeedback";
-    private static final int CONFIRM_PATTERN_THEN_DISABLE_AND_CLEAR_REQUEST_CODE = 55;
+    private static final String KEY_UNLOCK_METHOD = "unlock_method";
+    private static final int UPDATE_PASSWORD_REQUEST = 56;
+    private static final int CONFIRM_EXISTING_REQUEST = 57;
+
+    // Encrypted File Systems constants
+    private static final String PROPERTY_EFS_ENABLED = "persist.security.efs.enabled";
+    private static final String PROPERTY_EFS_TRANSITION = "persist.security.efs.trans";
 
     private static final String PREFS_NAME = "location_prefs";
     private static final String PREFS_USE_LOCATION = "use_location";
 
-    private LockPatternUtils mLockPatternUtils;
-    private CheckBoxPreference mLockEnabled;
     private CheckBoxPreference mVisiblePattern;
     private CheckBoxPreference mTactileFeedback;
-    private Preference mChoosePattern;
 
     private CheckBoxPreference mShowPassword;
 
@@ -85,24 +91,28 @@
     private static final String LOCATION_GPS = "location_gps";
     private static final String ASSISTED_GPS = "assisted_gps";
 
+    // Default password lengths if device policy isn't in effect. Ignored otherwise.
+    private static final int PASSWORD_MIN_LENGTH = 4;
+    private static final int PASSWORD_MAX_LENGTH = 16;
+
     // Credential storage
-    private static final int CSTOR_MIN_PASSWORD_LENGTH = 8;
-
-    private static final int CSTOR_INIT_DIALOG = 1;
-    private static final int CSTOR_CHANGE_PASSWORD_DIALOG = 2;
-    private static final int CSTOR_UNLOCK_DIALOG = 3;
-    private static final int CSTOR_RESET_DIALOG = 4;
-
     private CredentialStorage mCredentialStorage = new CredentialStorage();
 
+    // Encrypted file system
+    private  CheckBoxPreference mEncryptedFSEnabled;
+
     private CheckBoxPreference mNetwork;
     private CheckBoxPreference mGps;
     private CheckBoxPreference mAssistedGps;
 
+    DevicePolicyManager mDPM;
+    
     // These provide support for receiving notification when Location Manager settings change.
     // This is necessary because the Network Location Provider can change settings
     // if the user does not confirm enabling the provider.
     private ContentQueryMap mContentQueryMap;
+    private ListPreference mUnlockMethod;
+    private ChooseLockSettingsHelper mChooseLockSettingsHelper;
     private final class SettingsObserver implements Observer {
         public void update(Observable o, Object arg) {
             updateToggles();
@@ -114,7 +124,9 @@
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.security_settings);
 
-        mLockPatternUtils = new LockPatternUtils(getContentResolver());
+        mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
+        
+        mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this);
 
         createPreferenceHierarchy();
 
@@ -131,45 +143,28 @@
                 null);
         mContentQueryMap = new ContentQueryMap(settingsCursor, Settings.System.NAME, true, null);
         mContentQueryMap.addObserver(new SettingsObserver());
-
-        mCredentialStorage.handleIntent(getIntent());
     }
 
     private PreferenceScreen createPreferenceHierarchy() {
         // Root
         PreferenceScreen root = this.getPreferenceScreen();
 
-        // Inline preferences
-        PreferenceCategory inlinePrefCat = new PreferenceCategory(this);
-        inlinePrefCat.setTitle(R.string.lock_settings_title);
-        root.addPreference(inlinePrefCat);
+        PreferenceManager pm = getPreferenceManager();
 
-        // change pattern lock
-        Intent intent = new Intent();
-        intent.setClassName("com.android.settings",
-                    "com.android.settings.ChooseLockPatternTutorial");
-        mChoosePattern = getPreferenceManager().createPreferenceScreen(this);
-        mChoosePattern.setIntent(intent);
-        inlinePrefCat.addPreference(mChoosePattern);
-
-        // autolock toggle
-        mLockEnabled = new LockEnabledPref(this);
-        mLockEnabled.setTitle(R.string.lockpattern_settings_enable_title);
-        mLockEnabled.setSummary(R.string.lockpattern_settings_enable_summary);
-        mLockEnabled.setKey(KEY_LOCK_ENABLED);
-        inlinePrefCat.addPreference(mLockEnabled);
+        mUnlockMethod = (ListPreference) pm.findPreference(KEY_UNLOCK_METHOD);
+        mUnlockMethod.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+            public boolean onPreferenceChange(Preference preference, Object newValue) {
+                String value = (String) newValue;
+                handleUpdateUnlockMethod(value);
+                return false;
+            }
+        });
 
         // visible pattern
-        mVisiblePattern = new CheckBoxPreference(this);
-        mVisiblePattern.setKey(KEY_VISIBLE_PATTERN);
-        mVisiblePattern.setTitle(R.string.lockpattern_settings_enable_visible_pattern_title);
-        inlinePrefCat.addPreference(mVisiblePattern);
+        mVisiblePattern = (CheckBoxPreference) pm.findPreference(KEY_VISIBLE_PATTERN);
 
         // tactile feedback
-        mTactileFeedback = new CheckBoxPreference(this);
-        mTactileFeedback.setKey(KEY_TACTILE_FEEDBACK_ENABLED);
-        mTactileFeedback.setTitle(R.string.lockpattern_settings_enable_tactile_feedback_title);
-        inlinePrefCat.addPreference(mTactileFeedback);
+        mTactileFeedback = (CheckBoxPreference) pm.findPreference(KEY_TACTILE_FEEDBACK_ENABLED);
 
         int activePhoneType = TelephonyManager.getDefault().getPhoneType();
 
@@ -180,10 +175,7 @@
                     .createPreferenceScreen(this);
             simLockPreferences.setTitle(R.string.sim_lock_settings_category);
             // Intent to launch SIM lock settings
-            intent = new Intent();
-            intent.setClassName("com.android.settings", "com.android.settings.IccLockSettings");
-            simLockPreferences.setIntent(intent);
-
+            simLockPreferences.setIntent(new Intent().setClassName(PACKAGE, ICC_LOCK_SETTINGS));
             PreferenceCategory simLockCat = new PreferenceCategory(this);
             simLockCat.setTitle(R.string.sim_lock_settings_title);
             root.addPreference(simLockCat);
@@ -202,32 +194,70 @@
         showPassword.setPersistent(false);
         passwordsCat.addPreference(showPassword);
 
+        // Device policies
+        PreferenceCategory devicePoliciesCat = new PreferenceCategory(this);
+        devicePoliciesCat.setTitle(R.string.device_admin_title);
+        root.addPreference(devicePoliciesCat);
+
+        Preference deviceAdminButton = new Preference(this);
+        deviceAdminButton.setTitle(R.string.manage_device_admin);
+        deviceAdminButton.setSummary(R.string.manage_device_admin_summary);
+        Intent deviceAdminIntent = new Intent();
+        deviceAdminIntent.setClass(this, DeviceAdminSettings.class);
+        deviceAdminButton.setIntent(deviceAdminIntent);
+        devicePoliciesCat.addPreference(deviceAdminButton);
+
         // Credential storage
         PreferenceCategory credentialsCat = new PreferenceCategory(this);
         credentialsCat.setTitle(R.string.credentials_category);
         root.addPreference(credentialsCat);
-        mCredentialStorage.createPreferences(credentialsCat);
+        mCredentialStorage.createPreferences(credentialsCat, CredentialStorage.TYPE_KEYSTORE);
+
+        // File System Encryption
+        PreferenceCategory encryptedfsCat = new PreferenceCategory(this);
+        encryptedfsCat.setTitle(R.string.encrypted_fs_category);
+        root.addPreference(encryptedfsCat);
+        mCredentialStorage.createPreferences(encryptedfsCat, CredentialStorage.TYPE_ENCRYPTEDFS);
 
         return root;
     }
 
+    protected void handleUpdateUnlockMethod(final String value) {
+        if ("none".equals(value)) {
+            if (mDPM.getPasswordMode() == DevicePolicyManager.PASSWORD_MODE_UNSPECIFIED) {
+                mChooseLockSettingsHelper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST);
+            }
+        } else {
+            int reqMode;
+            if ("password".equals(value)) {
+                reqMode = LockPatternUtils.MODE_PASSWORD;
+            } else if ( "pin".equals(value)) {
+                reqMode = LockPatternUtils.MODE_PIN;
+            } else {
+                reqMode = LockPatternUtils.MODE_PATTERN;
+            }
+            int minMode = mDPM.getPasswordMode();
+            if (reqMode < minMode) {
+                reqMode = minMode;
+            }
+            Intent intent = new Intent();
+            intent.setClass(this, ChooseLockGeneric.class);
+            intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, reqMode);
+            startActivityForResult(intent, UPDATE_PASSWORD_REQUEST);
+        }
+    }
+
     @Override
     protected void onResume() {
         super.onResume();
 
-        boolean patternExists = mLockPatternUtils.savedPatternExists();
-        mLockEnabled.setEnabled(patternExists);
+        final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils();
+        boolean patternExists = lockPatternUtils.savedPatternExists();
         mVisiblePattern.setEnabled(patternExists);
         mTactileFeedback.setEnabled(patternExists);
 
-        mLockEnabled.setChecked(mLockPatternUtils.isLockPatternEnabled());
-        mVisiblePattern.setChecked(mLockPatternUtils.isVisiblePatternEnabled());
-        mTactileFeedback.setChecked(mLockPatternUtils.isTactileFeedbackEnabled());
-
-        int chooseStringRes = mLockPatternUtils.savedPatternExists() ?
-                R.string.lockpattern_settings_change_lock_pattern :
-                R.string.lockpattern_settings_choose_lock_pattern;
-        mChoosePattern.setTitle(chooseStringRes);
+        mVisiblePattern.setChecked(lockPatternUtils.isVisiblePatternEnabled());
+        mTactileFeedback.setChecked(lockPatternUtils.isTactileFeedbackEnabled());
 
         mShowPassword.setChecked(Settings.System.getInt(getContentResolver(),
                 Settings.System.TEXT_SHOW_PASSWORD, 1) != 0);
@@ -240,12 +270,13 @@
             Preference preference) {
         final String key = preference.getKey();
 
+        final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils();
         if (KEY_LOCK_ENABLED.equals(key)) {
-            mLockPatternUtils.setLockPatternEnabled(isToggled(preference));
+            lockPatternUtils.setLockPatternEnabled(isToggled(preference));
         } else if (KEY_VISIBLE_PATTERN.equals(key)) {
-            mLockPatternUtils.setVisiblePatternEnabled(isToggled(preference));
+            lockPatternUtils.setVisiblePatternEnabled(isToggled(preference));
         } else if (KEY_TACTILE_FEEDBACK_ENABLED.equals(key)) {
-            mLockPatternUtils.setTactileFeedbackEnabled(isToggled(preference));
+            lockPatternUtils.setTactileFeedbackEnabled(isToggled(preference));
         } else if (preference == mShowPassword) {
             Settings.System.putInt(getContentResolver(), Settings.System.TEXT_SHOW_PASSWORD,
                     mShowPassword.isChecked() ? 1 : 0);
@@ -267,11 +298,6 @@
         return false;
     }
 
-    private void showPrivacyPolicy() {
-        Intent intent = new Intent("android.settings.TERMS");
-        startActivity(intent);
-    }
-
     /*
      * Creates toggles for each available location provider
      */
@@ -294,36 +320,6 @@
     }
 
     /**
-     * For the user to disable keyguard, we first make them verify their
-     * existing pattern.
-     */
-    private class LockEnabledPref extends CheckBoxPreference {
-
-        public LockEnabledPref(Context context) {
-            super(context);
-        }
-
-        @Override
-        protected void onClick() {
-            if (mLockPatternUtils.savedPatternExists() && isChecked()) {
-                confirmPatternThenDisableAndClear();
-            } else {
-                super.onClick();
-            }
-        }
-    }
-
-    /**
-     * Launch screen to confirm the existing lock pattern.
-     * @see #onActivityResult(int, int, android.content.Intent)
-     */
-    private void confirmPatternThenDisableAndClear() {
-        final Intent intent = new Intent();
-        intent.setClassName("com.android.settings", "com.android.settings.ConfirmLockPattern");
-        startActivityForResult(intent, CONFIRM_PATTERN_THEN_DISABLE_AND_CLEAR_REQUEST_CODE);
-    }
-
-    /**
      * @see #confirmPatternThenDisableAndClear
      */
     @Override
@@ -332,64 +328,61 @@
 
         final boolean resultOk = resultCode == Activity.RESULT_OK;
 
-        if ((requestCode == CONFIRM_PATTERN_THEN_DISABLE_AND_CLEAR_REQUEST_CODE)
-                && resultOk) {
-            mLockPatternUtils.setLockPatternEnabled(false);
-            mLockPatternUtils.saveLockPattern(null);
+        LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils();
+        if ((requestCode == CONFIRM_EXISTING_REQUEST) && resultOk) {
+            lockPatternUtils.clearLock();
         }
     }
 
-    @Override
-    protected Dialog onCreateDialog(int id) {
-        return mCredentialStorage.createDialog(id);
-    }
-
     private class CredentialStorage implements DialogInterface.OnClickListener,
             DialogInterface.OnDismissListener, Preference.OnPreferenceChangeListener,
             Preference.OnPreferenceClickListener {
         private static final int MINIMUM_PASSWORD_LENGTH = 8;
-        private static final int UNLOCK_DIALOG = 1;
-        private static final int PASSWORD_DIALOG = 2;
-        private static final int RESET_DIALOG = 3;
+
+        private static final int TYPE_KEYSTORE = 0;
+        private static final int TYPE_ENCRYPTEDFS = 1;
+
+        // Dialog identifiers
+        private static final int DLG_BASE = 0;
+        private static final int DLG_UNLOCK = DLG_BASE + 1;
+        private static final int DLG_PASSWORD = DLG_UNLOCK + 1;
+        private static final int DLG_RESET = DLG_PASSWORD + 1;
+        private static final int DLG_ENABLE_EFS = DLG_RESET + 1;
 
         private KeyStore mKeyStore = KeyStore.getInstance();
-        private int mState = mKeyStore.test();
-        private int mDialogId;
-        private boolean mSubmit;
+        private int mState;
+        private boolean mSubmit = false;
+        private boolean mExternal = false;
 
+        private boolean mWillEnableEncryptedFS;
+        private int mShowingDialog = 0;
+
+        // Key Store controls
         private CheckBoxPreference mAccessCheckBox;
         private Preference mInstallButton;
         private Preference mPasswordButton;
         private Preference mResetButton;
 
-        private Intent mExternalIntent;
 
-        void handleIntent(Intent intent) {
-            if (intent != null) {
-                if (Credentials.UNLOCK_ACTION.equals(intent.getAction())) {
-                    mExternalIntent = intent;
-                    showDialog((mState == KeyStore.UNINITIALIZED) ?
-                            PASSWORD_DIALOG : UNLOCK_DIALOG);
-                }
-            }
-        }
+        // Encrypted file system controls
+        private  CheckBoxPreference mEncryptedFSEnabled;
 
         void resume() {
             mState = mKeyStore.test();
             updatePreferences(mState);
-        }
 
-        Dialog createDialog(int id) {
-            mDialogId = id;
-            switch (id) {
-                case UNLOCK_DIALOG:
-                    return createUnlockDialog();
-                case PASSWORD_DIALOG:
-                    return createPasswordDialog();
-                case RESET_DIALOG:
-                    return createResetDialog();
+            Intent intent = getIntent();
+            if (!mExternal && intent != null &&
+                    Credentials.UNLOCK_ACTION.equals(intent.getAction())) {
+                mExternal = true;
+                if (mState == KeyStore.UNINITIALIZED) {
+                    showPasswordDialog();
+                } else if (mState == KeyStore.LOCKED) {
+                    showUnlockDialog();
+                } else {
+                    finish();
+                }
             }
-            return null;
         }
 
         private void initialize(String password) {
@@ -420,23 +413,26 @@
         public boolean onPreferenceChange(Preference preference, Object value) {
             if (preference == mAccessCheckBox) {
                 if ((Boolean) value) {
-                    showDialog((mState == KeyStore.UNINITIALIZED) ?
-                            PASSWORD_DIALOG : UNLOCK_DIALOG);
+                    showUnlockDialog();
                 } else {
                     lock();
                 }
                 return true;
+            } else if (preference == mEncryptedFSEnabled) {
+                Boolean bval = (Boolean)value;
+                mWillEnableEncryptedFS = bval.booleanValue();
+                showSwitchEncryptedFSDialog();
             }
-            return false;
+            return true;
         }
 
         public boolean onPreferenceClick(Preference preference) {
             if (preference == mInstallButton) {
                 Credentials.getInstance().installFromSdCard(SecuritySettings.this);
             } else if (preference == mPasswordButton) {
-                showDialog(PASSWORD_DIALOG);
+                showPasswordDialog();
             } else if (preference == mResetButton) {
-                showDialog(RESET_DIALOG);
+                showResetDialog();
             } else {
                 return false;
             }
@@ -444,9 +440,43 @@
         }
 
         public void onClick(DialogInterface dialog, int button) {
-            mSubmit = (button == DialogInterface.BUTTON_POSITIVE);
-            if (button == DialogInterface.BUTTON_NEUTRAL) {
-                reset();
+            if (mShowingDialog != DLG_ENABLE_EFS) {
+                mSubmit = (button == DialogInterface.BUTTON_POSITIVE);
+                if (button == DialogInterface.BUTTON_NEUTRAL) {
+                    reset();
+                }
+            } else {
+                if (button == DialogInterface.BUTTON_POSITIVE) {
+                    // Perform action
+                    // Reboot and toggle Encrypted File Systems
+                    ICheckinService service =
+                    ICheckinService.Stub.asInterface(ServiceManager.getService("checkin"));
+                    if (service != null) {
+                        try {
+                            // This RPC should never return
+                            if (mWillEnableEncryptedFS) {
+                                service.masterClearAndToggleEFS(true);
+                            } else {
+                                service.masterClearAndToggleEFS(false);
+                            }
+                        } catch (android.os.RemoteException e) {
+                            // Intentionally blank - there's nothing we can do here
+                            Log.w("SecuritySettings",
+                                    "Unable to invoke ICheckinService.masterClearAndToggleEFS()");
+                        }
+                    } else {
+                        Log.w("SecuritySettings", "Unable to locate ICheckinService");
+                    }
+                    updatePreferences(mState);
+                } else if (button == DialogInterface.BUTTON_NEGATIVE) {
+                    // Cancel action
+                    Toast.makeText(SecuritySettings.this, R.string.encrypted_fs_cancel_confirm,
+                            Toast.LENGTH_SHORT).show();
+                    updatePreferences(mState);
+                } else {
+                    // Unknown - should not happen
+                    return;
+                }
             }
         }
 
@@ -454,14 +484,12 @@
             if (mSubmit && !isFinishing()) {
                 mSubmit = false;
                 if (!checkPassword((Dialog) dialog)) {
-                    showDialog(mDialogId);
+                    ((Dialog) dialog).show();
                     return;
                 }
             }
-            removeDialog(mDialogId);
             updatePreferences(mState);
-            if (mExternalIntent != null) {
-                mExternalIntent = null;
+            if (mExternal) {
                 finish();
             }
         }
@@ -534,36 +562,53 @@
             }
         }
 
-        private void createPreferences(PreferenceCategory category) {
-            mAccessCheckBox = new CheckBoxPreference(SecuritySettings.this);
-            mAccessCheckBox.setTitle(R.string.credentials_access);
-            mAccessCheckBox.setSummary(R.string.credentials_access_summary);
-            mAccessCheckBox.setOnPreferenceChangeListener(this);
-            category.addPreference(mAccessCheckBox);
+        private void createPreferences(PreferenceCategory category, int type) {
+            switch(type) {
+            case TYPE_KEYSTORE:
+                mAccessCheckBox = new CheckBoxPreference(SecuritySettings.this);
+                mAccessCheckBox.setTitle(R.string.credentials_access);
+                mAccessCheckBox.setSummary(R.string.credentials_access_summary);
+                mAccessCheckBox.setOnPreferenceChangeListener(this);
+                category.addPreference(mAccessCheckBox);
 
-            mInstallButton = new Preference(SecuritySettings.this);
-            mInstallButton.setTitle(R.string.credentials_install_certificates);
-            mInstallButton.setSummary(R.string.credentials_install_certificates_summary);
-            mInstallButton.setOnPreferenceClickListener(this);
-            category.addPreference(mInstallButton);
+                mInstallButton = new Preference(SecuritySettings.this);
+                mInstallButton.setTitle(R.string.credentials_install_certificates);
+                mInstallButton.setSummary(R.string.credentials_install_certificates_summary);
+                mInstallButton.setOnPreferenceClickListener(this);
+                category.addPreference(mInstallButton);
 
-            mPasswordButton = new Preference(SecuritySettings.this);
-            mPasswordButton.setTitle(R.string.credentials_set_password);
-            mPasswordButton.setSummary(R.string.credentials_set_password_summary);
-            mPasswordButton.setOnPreferenceClickListener(this);
-            category.addPreference(mPasswordButton);
+                mPasswordButton = new Preference(SecuritySettings.this);
+                mPasswordButton.setTitle(R.string.credentials_set_password);
+                mPasswordButton.setSummary(R.string.credentials_set_password_summary);
+                mPasswordButton.setOnPreferenceClickListener(this);
+                category.addPreference(mPasswordButton);
 
-            mResetButton = new Preference(SecuritySettings.this);
-            mResetButton.setTitle(R.string.credentials_reset);
-            mResetButton.setSummary(R.string.credentials_reset_summary);
-            mResetButton.setOnPreferenceClickListener(this);
-            category.addPreference(mResetButton);
+                mResetButton = new Preference(SecuritySettings.this);
+                mResetButton.setTitle(R.string.credentials_reset);
+                mResetButton.setSummary(R.string.credentials_reset_summary);
+                mResetButton.setOnPreferenceClickListener(this);
+                category.addPreference(mResetButton);
+                break;
+
+            case TYPE_ENCRYPTEDFS:
+                mEncryptedFSEnabled = new CheckBoxPreference(SecuritySettings.this);
+                mEncryptedFSEnabled.setTitle(R.string.encrypted_fs_enable);
+                mEncryptedFSEnabled.setSummary(R.string.encrypted_fs_enable_summary);
+                mEncryptedFSEnabled.setOnPreferenceChangeListener(this);
+                category.addPreference(mEncryptedFSEnabled);
+                break;
+            }
         }
 
         private void updatePreferences(int state) {
-            mAccessCheckBox.setEnabled(state != KeyStore.UNINITIALIZED);
             mAccessCheckBox.setChecked(state == KeyStore.NO_ERROR);
-            mResetButton.setEnabled(state != KeyStore.UNINITIALIZED);
+            boolean encFSEnabled = SystemProperties.getBoolean(PROPERTY_EFS_ENABLED,
+                    false);
+            mResetButton.setEnabled((!encFSEnabled) && (state != KeyStore.UNINITIALIZED));
+            mAccessCheckBox.setEnabled((state != KeyStore.UNINITIALIZED) && (!encFSEnabled));
+
+            // Encrypted File system preferences
+            mEncryptedFSEnabled.setChecked(encFSEnabled);
 
             // Show a toast message if the state is changed.
             if (mState == state) {
@@ -581,12 +626,12 @@
             mState = state;
         }
 
-        private Dialog createUnlockDialog() {
+        private void showUnlockDialog() {
             View view = View.inflate(SecuritySettings.this,
                     R.layout.credentials_unlock_dialog, null);
 
-            // show extra hint only when the action comes from outside
-            if (mExternalIntent != null) {
+            // Show extra hint only when the action comes from outside.
+            if (mExternal) {
                 view.findViewById(R.id.hint).setVisibility(View.VISIBLE);
             }
 
@@ -597,10 +642,11 @@
                     .setNegativeButton(android.R.string.cancel, this)
                     .create();
             dialog.setOnDismissListener(this);
-            return dialog;
+            mShowingDialog = DLG_UNLOCK;
+            dialog.show();
         }
 
-        private Dialog createPasswordDialog() {
+        private void showPasswordDialog() {
             View view = View.inflate(SecuritySettings.this,
                     R.layout.credentials_password_dialog, null);
 
@@ -618,17 +664,38 @@
                     .setNegativeButton(android.R.string.cancel, this)
                     .create();
             dialog.setOnDismissListener(this);
-            return dialog;
+            mShowingDialog = DLG_PASSWORD;
+            dialog.show();
         }
 
-        private Dialog createResetDialog() {
-            return new AlertDialog.Builder(SecuritySettings.this)
+        private void showResetDialog() {
+            mShowingDialog = DLG_RESET;
+            new AlertDialog.Builder(SecuritySettings.this)
                     .setTitle(android.R.string.dialog_alert_title)
                     .setIcon(android.R.drawable.ic_dialog_alert)
                     .setMessage(R.string.credentials_reset_hint)
                     .setNeutralButton(getString(android.R.string.ok), this)
                     .setNegativeButton(getString(android.R.string.cancel), this)
-                    .create();
+                    .create().show();
+        }
+
+        private void showSwitchEncryptedFSDialog() {
+            AlertDialog.Builder builder = new AlertDialog.Builder(SecuritySettings.this)
+                    .setCancelable(false)
+                    .setTitle(R.string.encrypted_fs_alert_dialog_title);
+
+            mShowingDialog = DLG_ENABLE_EFS;
+            if (mWillEnableEncryptedFS) {
+                 builder.setMessage(R.string.encrypted_fs_enable_dialog)
+                         .setPositiveButton(R.string.encrypted_fs_enable_button, this)
+                         .setNegativeButton(R.string.encrypted_fs_cancel_button, this)
+                         .create().show();
+            } else {
+                builder.setMessage(R.string.encrypted_fs_disable_dialog)
+                        .setPositiveButton(R.string.encrypted_fs_disable_button, this)
+                        .setNegativeButton(R.string.encrypted_fs_cancel_button, this)
+                        .create().show();
+            }
         }
     }
 }
diff --git a/src/com/android/settings/SettingsSafetyLegalActivity.java b/src/com/android/settings/SettingsSafetyLegalActivity.java
index 619dc94..0c51928 100644
--- a/src/com/android/settings/SettingsSafetyLegalActivity.java
+++ b/src/com/android/settings/SettingsSafetyLegalActivity.java
@@ -58,7 +58,11 @@
 
         // Begin accessing
         mWebView.getSettings().setJavaScriptEnabled(true);
-        mWebView.loadUrl(userSafetylegalUrl);
+        if (savedInstanceState == null) {
+            mWebView.loadUrl(userSafetylegalUrl);
+        } else {
+            mWebView.restoreState(savedInstanceState);
+        }
         mWebView.setWebViewClient(new WebViewClient() {
             @Override
             public void onPageFinished(WebView view, String url) {
@@ -110,4 +114,10 @@
     public void onCancel(DialogInterface dialog) {
         finish();
     }
+
+    @Override
+    public void onSaveInstanceState(Bundle icicle) {
+        mWebView.saveState(icicle);
+        super.onSaveInstanceState(icicle);
+    }
 }
diff --git a/src/com/android/settings/SoundAndDisplaySettings.java b/src/com/android/settings/SoundSettings.java
similarity index 72%
rename from src/com/android/settings/SoundAndDisplaySettings.java
rename to src/com/android/settings/SoundSettings.java
index 29eb878..9ac2fe1 100644
--- a/src/com/android/settings/SoundAndDisplaySettings.java
+++ b/src/com/android/settings/SoundSettings.java
@@ -40,7 +40,7 @@
 import android.util.Log;
 import android.view.IWindowManager;
 
-public class SoundAndDisplaySettings extends PreferenceActivity implements
+public class SoundSettings extends PreferenceActivity implements
         Preference.OnPreferenceChangeListener {
     private static final String TAG = "SoundAndDisplaysSettings";
 
@@ -50,12 +50,9 @@
 
     private static final String KEY_SILENT = "silent";
     private static final String KEY_VIBRATE = "vibrate";
-    private static final String KEY_SCREEN_TIMEOUT = "screen_timeout";
     private static final String KEY_DTMF_TONE = "dtmf_tone";
     private static final String KEY_SOUND_EFFECTS = "sound_effects";
     private static final String KEY_HAPTIC_FEEDBACK = "haptic_feedback";
-    private static final String KEY_ANIMATIONS = "animations";
-    private static final String KEY_ACCELEROMETER = "accelerometer";
     private static final String KEY_PLAY_MEDIA_NOTIFICATION_SOUNDS =
             "play_media_notification_sounds";
     private static final String KEY_EMERGENCY_TONE = "emergency_tone";
@@ -79,15 +76,10 @@
     private CheckBoxPreference mDtmfTone;
     private CheckBoxPreference mSoundEffects;
     private CheckBoxPreference mHapticFeedback;
-    private ListPreference mAnimations;
-    private CheckBoxPreference mAccelerometer;
     private CheckBoxPreference mNotificationPulse;
-    private float[] mAnimationScales;
 
     private AudioManager mAudioManager;
 
-    private IWindowManager mWindowManager;
-
     private BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -106,11 +98,10 @@
         int activePhoneType = TelephonyManager.getDefault().getPhoneType();
 
         mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
-        mWindowManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
 
         mMountService = IMountService.Stub.asInterface(ServiceManager.getService("mount"));
 
-        addPreferencesFromResource(R.xml.sound_and_display_settings);
+        addPreferencesFromResource(R.xml.sound_settings);
 
         if (TelephonyManager.PHONE_TYPE_CDMA != activePhoneType) {
             // device is not CDMA, do not display CDMA emergency_tone
@@ -133,16 +124,6 @@
         mHapticFeedback.setPersistent(false);
         mHapticFeedback.setChecked(Settings.System.getInt(resolver,
                 Settings.System.HAPTIC_FEEDBACK_ENABLED, 0) != 0);
-        mAnimations = (ListPreference) findPreference(KEY_ANIMATIONS);
-        mAnimations.setOnPreferenceChangeListener(this);
-        mAccelerometer = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
-        mAccelerometer.setPersistent(false);
-
-        ListPreference screenTimeoutPreference =
-            (ListPreference) findPreference(KEY_SCREEN_TIMEOUT);
-        screenTimeoutPreference.setValue(String.valueOf(Settings.System.getInt(
-                resolver, SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE)));
-        screenTimeoutPreference.setOnPreferenceChangeListener(this);
 
         if (TelephonyManager.PHONE_TYPE_CDMA == activePhoneType) {
             ListPreference emergencyTonePreference =
@@ -219,47 +200,6 @@
                 R.string.silent_mode_incl_alarm_summary :
                 R.string.silent_mode_summary);
 
-        int animations = 0;
-        try {
-            mAnimationScales = mWindowManager.getAnimationScales();
-        } catch (RemoteException e) {
-        }
-        if (mAnimationScales != null) {
-            if (mAnimationScales.length >= 1) {
-                animations = ((int)(mAnimationScales[0]+.5f)) % 10;
-            }
-            if (mAnimationScales.length >= 2) {
-                animations += (((int)(mAnimationScales[1]+.5f)) & 0x7) * 10;
-            }
-        }
-        int idx = 0;
-        int best = 0;
-        CharSequence[] aents = mAnimations.getEntryValues();
-        for (int i=0; i<aents.length; i++) {
-            int val = Integer.parseInt(aents[i].toString());
-            if (val <= animations && val > best) {
-                best = val;
-                idx = i;
-            }
-        }
-        mAnimations.setValueIndex(idx);
-        updateAnimationsSummary(mAnimations.getValue());
-        mAccelerometer.setChecked(Settings.System.getInt(
-                getContentResolver(),
-                Settings.System.ACCELEROMETER_ROTATION, 0) != 0);
-    }
-
-    private void updateAnimationsSummary(Object value) {
-        CharSequence[] summaries = getResources().getTextArray(R.array.animations_summaries);
-        CharSequence[] values = mAnimations.getEntryValues();
-        for (int i=0; i<values.length; i++) {
-            //Log.i("foo", "Comparing entry "+ values[i] + " to current "
-            //        + mAnimations.getValue());
-            if (values[i].equals(value)) {
-                mAnimations.setSummary(summaries[i]);
-                break;
-            }
-        }
     }
 
     private void setRingerMode(boolean silent, boolean vibrate) {
@@ -301,10 +241,6 @@
             Settings.System.putInt(getContentResolver(), Settings.System.HAPTIC_FEEDBACK_ENABLED,
                     mHapticFeedback.isChecked() ? 1 : 0);
 
-        } else if (preference == mAccelerometer) {
-            Settings.System.putInt(getContentResolver(),
-                    Settings.System.ACCELEROMETER_ROTATION,
-                    mAccelerometer.isChecked() ? 1 : 0);
         } else if (preference == mNotificationPulse) {
             boolean value = mNotificationPulse.isChecked();
             Settings.System.putInt(getContentResolver(),
@@ -316,34 +252,7 @@
 
     public boolean onPreferenceChange(Preference preference, Object objValue) {
         final String key = preference.getKey();
-        if (KEY_ANIMATIONS.equals(key)) {
-            try {
-                int value = Integer.parseInt((String) objValue);
-                if (mAnimationScales.length >= 1) {
-                    mAnimationScales[0] = value%10;
-                }
-                if (mAnimationScales.length >= 2) {
-                    mAnimationScales[1] = (value/10)%10;
-                }
-                try {
-                    mWindowManager.setAnimationScales(mAnimationScales);
-                } catch (RemoteException e) {
-                }
-                updateAnimationsSummary(objValue);
-            } catch (NumberFormatException e) {
-                Log.e(TAG, "could not persist animation setting", e);
-            }
-
-        }
-        if (KEY_SCREEN_TIMEOUT.equals(key)) {
-            int value = Integer.parseInt((String) objValue);
-            try {
-                Settings.System.putInt(getContentResolver(),
-                        SCREEN_OFF_TIMEOUT, value);
-            } catch (NumberFormatException e) {
-                Log.e(TAG, "could not persist screen timeout setting", e);
-            }
-        } else if (KEY_EMERGENCY_TONE.equals(key)) {
+        if (KEY_EMERGENCY_TONE.equals(key)) {
             int value = Integer.parseInt((String) objValue);
             try {
                 Settings.System.putInt(getContentResolver(),
diff --git a/src/com/android/settings/TextToSpeechSettings.java b/src/com/android/settings/TextToSpeechSettings.java
index f60d0f2..838d978 100644
--- a/src/com/android/settings/TextToSpeechSettings.java
+++ b/src/com/android/settings/TextToSpeechSettings.java
@@ -55,6 +55,7 @@
     private static final String KEY_TTS_DEFAULT_LANG = "tts_default_lang";
     private static final String KEY_TTS_DEFAULT_COUNTRY = "tts_default_country";
     private static final String KEY_TTS_DEFAULT_VARIANT = "tts_default_variant";
+    private static final String KEY_TTS_DEFAULT_SYNTH = "tts_default_synth";
     // TODO move default Locale values to TextToSpeech.Engine
     private static final String DEFAULT_LANG_VAL = "eng";
     private static final String DEFAULT_COUNTRY_VAL = "USA";
@@ -70,6 +71,7 @@
     private CheckBoxPreference mUseDefaultPref = null;
     private ListPreference     mDefaultRatePref = null;
     private ListPreference     mDefaultLocPref = null;
+    private ListPreference     mDefaultSynthPref = null;
     private String             mDefaultLanguage = null;
     private String             mDefaultCountry = null;
     private String             mDefaultLocVariant = null;
@@ -90,6 +92,7 @@
      * startActivityForResult.
      */
     private static final int VOICE_DATA_INTEGRITY_CHECK = 1977;
+    private static final int GET_SAMPLE_TEXT = 1983;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -156,7 +159,10 @@
         mUseDefaultPref.setChecked(useDefault == 1);
         mUseDefaultPref.setOnPreferenceChangeListener(this);
 
-        // Default engine
+        // Default synthesis engine
+        mDefaultSynthPref = (ListPreference) findPreference(KEY_TTS_DEFAULT_SYNTH);
+        loadEngines();
+        mDefaultSynthPref.setOnPreferenceChangeListener(this);
         String engine = Settings.Secure.getString(resolver, TTS_DEFAULT_SYNTH);
         if (engine == null) {
             // TODO move FALLBACK_TTS_DEFAULT_SYNTH to TextToSpeech
@@ -225,6 +231,30 @@
         }
     }
 
+    /**
+     * Ask the current default engine to return a string of sample text to be
+     * spoken to the user.
+     */
+    private void getSampleText() {
+        PackageManager pm = getPackageManager();
+        Intent intent = new Intent();
+        // TODO (clchen): Replace Intent string with the actual
+        // Intent defined in the list of platform Intents.
+        intent.setAction("android.speech.tts.engine.GET_SAMPLE_TEXT");
+        intent.putExtra("language", mDefaultLanguage);
+        intent.putExtra("country", mDefaultCountry);
+        intent.putExtra("variant", mDefaultLocVariant);
+        List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
+        // query only the package that matches that of the default engine
+        for (int i = 0; i < resolveInfos.size(); i++) {
+            ActivityInfo currentActivityInfo = resolveInfos.get(i).activityInfo;
+            if (mDefaultEng.equals(currentActivityInfo.packageName)) {
+                intent.setClassName(mDefaultEng, currentActivityInfo.name);
+                this.startActivityForResult(intent, GET_SAMPLE_TEXT);
+            }
+        }
+    }
+
 
     /**
      * Called when the TTS engine is initialized.
@@ -258,6 +288,16 @@
                 mEnableDemo = false;
                 updateWidgetState();
             }
+        } else if (requestCode == GET_SAMPLE_TEXT) {
+            if (resultCode == TextToSpeech.LANG_AVAILABLE) {
+                if (mTts != null) {
+                    String sample = data.getExtras().getString("sampleText");
+                    mTts.speak(sample, TextToSpeech.QUEUE_FLUSH, null);
+                }
+            } else {
+                // TODO: Display an error here to the user.
+                Log.e(TAG, "Did not have a sample string for the requested language");
+            }
         }
     }
 
@@ -297,6 +337,14 @@
             int newIndex = mDefaultLocPref.findIndexOfValue((String)objValue);
             Log.v("Settings", " selected is " + newIndex);
             mDemoStringIndex = newIndex > -1 ? newIndex : 0;
+        } else if (KEY_TTS_DEFAULT_SYNTH.equals(preference.getKey())) {
+            // TODO: Do a data check here
+            mDefaultEng = objValue.toString();
+            Settings.Secure.putString(getContentResolver(), TTS_DEFAULT_SYNTH, mDefaultEng);
+            if (mTts != null) {
+                mTts.setEngineByPackageName(mDefaultEng);
+            }
+            Log.v("Settings", "The default synth is: " + objValue.toString());
         }
 
         return true;
@@ -308,10 +356,9 @@
      */
     public boolean onPreferenceClick(Preference preference) {
         if (preference == mPlayExample) {
-            // Play example
-            if (mTts != null) {
-                mTts.speak(mDemoStrings[mDemoStringIndex], TextToSpeech.QUEUE_FLUSH, null);
-            }
+            // Get the sample text from the TTS engine; onActivityResult will do
+            // the actual speaking
+            getSampleText();
             return true;
         }
         if (preference == mInstallData) {
@@ -424,4 +471,23 @@
         Settings.Secure.putString(resolver, TTS_DEFAULT_VARIANT, DEFAULT_VARIANT_VAL);
     }
 
+
+  private void loadEngines() {
+    ListPreference enginesPref = (ListPreference) findPreference(KEY_TTS_DEFAULT_SYNTH);
+
+    Intent intent = new Intent("android.intent.action.START_TTS_ENGINE");
+
+    ResolveInfo[] enginesArray = new ResolveInfo[0];
+    PackageManager pm = getPackageManager();
+    enginesArray = pm.queryIntentActivities(intent, 0).toArray(enginesArray);
+    CharSequence entries[] = new CharSequence[enginesArray.length];
+    CharSequence values[] = new CharSequence[enginesArray.length];
+    for (int i = 0; i < enginesArray.length; i++) {
+      entries[i] = enginesArray[i].loadLabel(pm);
+      values[i] = enginesArray[i].activityInfo.packageName;
+    }
+    enginesPref.setEntries(entries);
+    enginesPref.setEntryValues(values);
+  }
+
 }
diff --git a/src/com/android/settings/VoiceInputOutputSettings.java b/src/com/android/settings/VoiceInputOutputSettings.java
new file mode 100644
index 0000000..7586bd0
--- /dev/null
+++ b/src/com/android/settings/VoiceInputOutputSettings.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceGroup;
+
+import java.util.List;
+
+/**
+ * Settings screen for voice input/output.
+ */
+public class VoiceInputOutputSettings extends PreferenceActivity {
+    
+    private static final String KEY_PARENT = "parent";
+    private static final String KEY_VOICE_SEARCH_SETTINGS = "voice_search_settings";
+    private static final String KEY_KEYBOARD_SETTINGS = "keyboard_settings";
+    
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        addPreferencesFromResource(R.xml.voice_input_output_settings);
+        
+        removePreferenceIfNecessary(KEY_VOICE_SEARCH_SETTINGS);
+        removePreferenceIfNecessary(KEY_KEYBOARD_SETTINGS);
+    }
+
+    /**
+     * Removes a preference if there is no activity to handle its intent.
+     */
+    private void removePreferenceIfNecessary(String preferenceKey) {
+        PreferenceGroup parent = (PreferenceGroup) findPreference(KEY_PARENT);
+        
+        Preference preference = parent.findPreference(preferenceKey);
+        if (preference == null) {
+            return;
+        }
+
+        Intent intent = preference.getIntent();
+        if (intent != null) {
+            PackageManager pm = getPackageManager();
+            if (!pm.queryIntentActivities(intent, 0).isEmpty()) {
+                return;
+            }
+        }
+        
+        // Did not find a matching activity, so remove the preference.
+        parent.removePreference(preference);
+    }
+}
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 22417bb..bf75e27 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007 The Android Open Source Project
+ * Copyright (C) 2009 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +17,10 @@
 package com.android.settings;
 
 import android.bluetooth.BluetoothAdapter;
+import android.content.Context;
 import android.content.Intent;
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
-import android.os.IBinder;
 import android.os.ServiceManager;
 import android.os.SystemProperties;
 import android.preference.CheckBoxPreference;
@@ -45,10 +45,10 @@
     public static final String EXIT_ECM_RESULT = "exit_ecm_result";
     public static final int REQUEST_CODE_EXIT_ECM = 1;
 
-    private WifiEnabler mWifiEnabler;
     private AirplaneModeEnabler mAirplaneModeEnabler;
-    private BluetoothEnabler mBtEnabler;
     private CheckBoxPreference mAirplaneModePreference;
+    private WifiEnabler mWifiEnabler;
+    private BluetoothEnabler mBtEnabler;
 
     /**
      * Invoked on each preference click in this hierarchy, overrides
@@ -57,96 +57,90 @@
      */
     @Override
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
-        if ( (preference == mAirplaneModePreference) &&
-                (Boolean.parseBoolean(
-                    SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) ) {
+        if (preference == mAirplaneModePreference && Boolean.parseBoolean(
+                SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
             // In ECM mode launch ECM app dialog
             startActivityForResult(
                 new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null),
                 REQUEST_CODE_EXIT_ECM);
-
             return true;
         }
-        else {
-            // Let the intents be launched by the Preference manager
-            return false;
-        }
+        // Let the intents be launched by the Preference manager
+        return false;
     }
-    
+
+    public static boolean isRadioAllowed(Context context, String type) {
+        if (!AirplaneModeEnabler.isAirplaneModeOn(context)) {
+            return true;
+        }
+        // Here we use the same logic in onCreate().
+        String toggleable = Settings.System.getString(context.getContentResolver(),
+                Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
+        return toggleable != null && toggleable.contains(type);
+    }
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
         addPreferencesFromResource(R.xml.wireless_settings);
 
-        initToggles();
+        CheckBoxPreference airplane = (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE);
+        CheckBoxPreference wifi = (CheckBoxPreference) findPreference(KEY_TOGGLE_WIFI);
+        CheckBoxPreference bt = (CheckBoxPreference) findPreference(KEY_TOGGLE_BLUETOOTH);
+
+        mAirplaneModeEnabler = new AirplaneModeEnabler(this, airplane);
         mAirplaneModePreference = (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE);
+        mWifiEnabler = new WifiEnabler(this, wifi);
+        mBtEnabler = new BluetoothEnabler(this, bt);
+
+        String toggleable = Settings.System.getString(getContentResolver(),
+                Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
+
+        // Manually set dependencies for Wifi when not toggleable.
+        if (toggleable == null || !toggleable.contains(Settings.System.RADIO_WIFI)) {
+            wifi.setDependency(KEY_TOGGLE_AIRPLANE);
+            findPreference(KEY_WIFI_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
+            findPreference(KEY_VPN_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
+        }
+
+        // Manually set dependencies for Bluetooth when not toggleable.
+        if (toggleable == null || !toggleable.contains(Settings.System.RADIO_BLUETOOTH)) {
+            bt.setDependency(KEY_TOGGLE_AIRPLANE);
+            findPreference(KEY_BT_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
+        }
+
+        // Disable Bluetooth Settings if Bluetooth service is not available.
+        if (ServiceManager.getService(BluetoothAdapter.BLUETOOTH_SERVICE) == null) {
+            findPreference(KEY_BT_SETTINGS).setEnabled(false);
+        }
     }
     
     @Override
     protected void onResume() {
         super.onResume();
         
+        mAirplaneModeEnabler.resume();
         mWifiEnabler.resume();
         mBtEnabler.resume();
-        mAirplaneModeEnabler.resume();
     }
     
     @Override
     protected void onPause() {
         super.onPause();
         
-        mWifiEnabler.pause();
         mAirplaneModeEnabler.pause();
+        mWifiEnabler.pause();
         mBtEnabler.pause();
     }
     
-    private void initToggles() {
-        
-        Preference airplanePreference = findPreference(KEY_TOGGLE_AIRPLANE);
-        Preference wifiPreference = findPreference(KEY_TOGGLE_WIFI);
-        Preference btPreference = findPreference(KEY_TOGGLE_BLUETOOTH);
-        Preference wifiSettings = findPreference(KEY_WIFI_SETTINGS);
-        Preference vpnSettings = findPreference(KEY_VPN_SETTINGS);
-
-        IBinder b = ServiceManager.getService(BluetoothAdapter.BLUETOOTH_SERVICE);
-        if (b == null) {
-            // Disable BT Settings if BT service is not available.
-            Preference btSettings = findPreference(KEY_BT_SETTINGS);
-            btSettings.setEnabled(false);
-        }
-
-        mWifiEnabler = new WifiEnabler(
-                this, (WifiManager) getSystemService(WIFI_SERVICE),
-                (CheckBoxPreference) wifiPreference);
-        mAirplaneModeEnabler = new AirplaneModeEnabler(
-                this, (CheckBoxPreference) airplanePreference);
-        mBtEnabler = new BluetoothEnabler(this, (CheckBoxPreference) btPreference);
-
-        // manually set up dependencies for Wifi if its radio is not toggleable in airplane mode
-        String toggleableRadios = Settings.System.getString(getContentResolver(),
-                Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
-        if (toggleableRadios == null || !toggleableRadios.contains(Settings.System.RADIO_WIFI)) {
-            wifiPreference.setDependency(airplanePreference.getKey());
-            wifiSettings.setDependency(airplanePreference.getKey());
-            vpnSettings.setDependency(airplanePreference.getKey());
-        }
-    }
-
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        switch(requestCode) {
-        case REQUEST_CODE_EXIT_ECM:
-            Boolean isChoiceYes =
-                data.getBooleanExtra(EXIT_ECM_RESULT, false);
+        if (requestCode == REQUEST_CODE_EXIT_ECM) {
+            Boolean isChoiceYes = data.getBooleanExtra(EXIT_ECM_RESULT, false);
             // Set Airplane mode based on the return value and checkbox state
             mAirplaneModeEnabler.setAirplaneModeInECM(isChoiceYes,
                     mAirplaneModePreference.isChecked());
-            break;
-
-        default:
-            break;
         }
     }
-
 }
diff --git a/src/com/android/settings/bluetooth/BluetoothEnabler.java b/src/com/android/settings/bluetooth/BluetoothEnabler.java
index b872916..426a4d3 100644
--- a/src/com/android/settings/bluetooth/BluetoothEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothEnabler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2010 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
 package com.android.settings.bluetooth;
 
 import com.android.settings.R;
+import com.android.settings.WirelessSettings;
 
 import android.bluetooth.BluetoothAdapter;
 import android.content.BroadcastReceiver;
@@ -25,8 +26,9 @@
 import android.content.IntentFilter;
 import android.preference.Preference;
 import android.preference.CheckBoxPreference;
+import android.provider.Settings;
 import android.text.TextUtils;
-import android.util.Config;
+import android.widget.Toast;
 
 /**
  * BluetoothEnabler is a helper to manage the Bluetooth on/off checkbox
@@ -34,16 +36,12 @@
  * preference reflects the current state.
  */
 public class BluetoothEnabler implements Preference.OnPreferenceChangeListener {
-
-    private static final boolean LOCAL_LOGD = Config.LOGD || false;
-    private static final String TAG = "BluetoothEnabler";
-
     private final Context mContext;
-    private final CheckBoxPreference mCheckBoxPreference;
+    private final CheckBoxPreference mCheckBox;
     private final CharSequence mOriginalSummary;
 
     private final LocalBluetoothManager mLocalManager;
-
+    private final IntentFilter mIntentFilter;
     private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -52,18 +50,18 @@
         }
     };
 
-    public BluetoothEnabler(Context context, CheckBoxPreference checkBoxPreference) {
+    public BluetoothEnabler(Context context, CheckBoxPreference checkBox) {
         mContext = context;
-        mCheckBoxPreference = checkBoxPreference;
-
-        mOriginalSummary = checkBoxPreference.getSummary();
-        checkBoxPreference.setPersistent(false);
+        mCheckBox = checkBox;
+        mOriginalSummary = checkBox.getSummary();
+        checkBox.setPersistent(false);
 
         mLocalManager = LocalBluetoothManager.getInstance(context);
         if (mLocalManager == null) {
-            // Bluetooth not supported
-            checkBoxPreference.setEnabled(false);
+            // Bluetooth is not supported
+            checkBox.setEnabled(false);
         }
+        mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
     }
 
     public void resume() {
@@ -71,16 +69,11 @@
             return;
         }
 
-        int state = mLocalManager.getBluetoothState();
-        // This is the widget enabled state, not the preference toggled state
-        mCheckBoxPreference.setEnabled(state == BluetoothAdapter.STATE_ON ||
-                state == BluetoothAdapter.STATE_OFF);
-        // BT state is not a sticky broadcast, so set it manually
-        handleStateChanged(state);
+        // Bluetooth state is not sticky, so set it manually
+        handleStateChanged(mLocalManager.getBluetoothState());
 
-        mContext.registerReceiver(mReceiver,
-                new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
-        mCheckBoxPreference.setOnPreferenceChangeListener(this);
+        mContext.registerReceiver(mReceiver, mIntentFilter);
+        mCheckBox.setOnPreferenceChangeListener(this);
     }
 
     public void pause() {
@@ -89,72 +82,51 @@
         }
 
         mContext.unregisterReceiver(mReceiver);
-        mCheckBoxPreference.setOnPreferenceChangeListener(null);
+        mCheckBox.setOnPreferenceChangeListener(null);
     }
 
     public boolean onPreferenceChange(Preference preference, Object value) {
-        // Turn on/off BT
-        setEnabled((Boolean) value);
+        boolean enable = (Boolean) value;
+
+        // Show toast message if Bluetooth is not allowed in airplane mode
+        if (enable && !WirelessSettings
+                .isRadioAllowed(mContext, Settings.System.RADIO_BLUETOOTH)) {
+            Toast.makeText(mContext, R.string.wifi_in_airplane_mode,
+                    Toast.LENGTH_SHORT).show();
+            return false;
+        }
+
+        mLocalManager.setBluetoothEnabled(enable);
+        mCheckBox.setEnabled(false);
 
         // Don't update UI to opposite state until we're sure
         return false;
     }
 
-    private void setEnabled(final boolean enable) {
-        // Disable preference
-        mCheckBoxPreference.setEnabled(false);
-
-        mLocalManager.setBluetoothEnabled(enable);
-    }
-
     private void handleStateChanged(int state) {
-
-        if (state == BluetoothAdapter.STATE_OFF ||
-                state == BluetoothAdapter.STATE_ON) {
-            mCheckBoxPreference.setChecked(state == BluetoothAdapter.STATE_ON);
-            mCheckBoxPreference.setSummary(state == BluetoothAdapter.STATE_OFF ?
-                                           mOriginalSummary :
-                                           null);
-
-            /*
-             * Don't ever disable the preference. Only enable here. Disablement
-             * is taken care of by the dependency code. If this is disabled
-             * here, it may not be re-enabled from the framework when dependency
-             * is met. http://b/issue?id=2053751
-             */
-            if (isEnabledByDependency()) {
-                mCheckBoxPreference.setEnabled(true);
-            }
-
-        } else if (state == BluetoothAdapter.STATE_TURNING_ON ||
-                state == BluetoothAdapter.STATE_TURNING_OFF) {
-            mCheckBoxPreference.setSummary(state == BluetoothAdapter.STATE_TURNING_ON
-                    ? R.string.wifi_starting
-                    : R.string.wifi_stopping);
-
-        } else {
-            mCheckBoxPreference.setChecked(false);
-            mCheckBoxPreference.setSummary(R.string.wifi_error);
-            mCheckBoxPreference.setEnabled(true);
+        switch (state) {
+            case BluetoothAdapter.STATE_TURNING_ON:
+                mCheckBox.setSummary(R.string.wifi_starting);
+                mCheckBox.setEnabled(false);
+                break;
+            case BluetoothAdapter.STATE_ON:
+                mCheckBox.setChecked(true);
+                mCheckBox.setSummary(null);
+                mCheckBox.setEnabled(true);
+                break;
+            case BluetoothAdapter.STATE_TURNING_OFF:
+                mCheckBox.setSummary(R.string.wifi_stopping);
+                mCheckBox.setEnabled(false);
+                break;
+            case BluetoothAdapter.STATE_OFF:
+                mCheckBox.setChecked(false);
+                mCheckBox.setSummary(mOriginalSummary);
+                mCheckBox.setEnabled(true);
+                break;
+            default:
+                mCheckBox.setChecked(false);
+                mCheckBox.setSummary(R.string.wifi_error);
+                mCheckBox.setEnabled(true);
         }
     }
-
-    private boolean isEnabledByDependency() {
-        Preference dep = getDependencyPreference();
-        if (dep == null) {
-            return true;
-        }
-
-        return !dep.shouldDisableDependents();
-    }
-
-    private Preference getDependencyPreference() {
-        String depKey = mCheckBoxPreference.getDependency();
-        if (TextUtils.isEmpty(depKey)) {
-            return null;
-        }
-
-        return mCheckBoxPreference.getPreferenceManager().findPreference(depKey);
-    }
-
 }
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index 4364795..4f3205b 100644
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -202,6 +202,12 @@
         }
     }
 
+    @Override
+    protected void onUserLeaveHint() {
+        super.onUserLeaveHint();
+        mLocalManager.stopScanning();
+    }
+
     private void addDevices() {
         List<CachedBluetoothDevice> cachedDevices =
                 mLocalManager.getCachedDeviceManager().getCachedDevicesCopy();
diff --git a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
index 57bffa9..ec8df3c 100644
--- a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
+++ b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
@@ -53,7 +53,7 @@
     private static final String TAG = "CachedBluetoothDevice";
     private static final boolean D = LocalBluetoothManager.D;
     private static final boolean V = LocalBluetoothManager.V;
-    private static final boolean DEBUG = false;
+    private static final boolean DEBUG = true; // STOPSHIP - disable before final rom
 
     private static final int CONTEXT_ITEM_CONNECT = Menu.FIRST + 1;
     private static final int CONTEXT_ITEM_DISCONNECT = Menu.FIRST + 2;
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothManager.java b/src/com/android/settings/bluetooth/LocalBluetoothManager.java
index ec5c6bc..43d4343 100644
--- a/src/com/android/settings/bluetooth/LocalBluetoothManager.java
+++ b/src/com/android/settings/bluetooth/LocalBluetoothManager.java
@@ -198,6 +198,12 @@
         }
     }
 
+    public void stopScanning() {
+        if (mAdapter.isDiscovering()) {
+            mAdapter.cancelDiscovery();
+        }
+    }
+
     public int getBluetoothState() {
 
         if (mState == BluetoothAdapter.ERROR) {
diff --git a/src/com/android/settings/deviceinfo/Memory.java b/src/com/android/settings/deviceinfo/Memory.java
index 53e2a69..422b5fe 100644
--- a/src/com/android/settings/deviceinfo/Memory.java
+++ b/src/com/android/settings/deviceinfo/Memory.java
@@ -47,14 +47,14 @@
 
     private static final String MEMORY_SD_AVAIL = "memory_sd_avail";
 
-    private static final String MEMORY_SD_UNMOUNT = "memory_sd_unmount";
+    private static final String MEMORY_SD_MOUNT_TOGGLE = "memory_sd_mount_toggle";
 
     private static final String MEMORY_SD_FORMAT = "memory_sd_format";
     private Resources mRes;
 
     private Preference mSdSize;
     private Preference mSdAvail;
-    private Preference mSdUnmount;
+    private Preference mSdMountToggle;
     private Preference mSdFormat;
     
     // Access using getMountService()
@@ -69,7 +69,7 @@
         mRes = getResources();
         mSdSize = findPreference(MEMORY_SD_SIZE);
         mSdAvail = findPreference(MEMORY_SD_AVAIL);
-        mSdUnmount = findPreference(MEMORY_SD_UNMOUNT);
+        mSdMountToggle = findPreference(MEMORY_SD_MOUNT_TOGGLE);
         mSdFormat = findPreference(MEMORY_SD_FORMAT);
     }
     
@@ -112,8 +112,13 @@
     
     @Override
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
-        if (preference == mSdUnmount) {
-            unmount();
+        if (preference == mSdMountToggle) {
+            String status = Environment.getExternalStorageState();
+            if (status.equals(Environment.MEDIA_MOUNTED)) {
+                unmount();
+            } else {
+                mount();
+            }
             return true;
         } else if (preference == mSdFormat) {
             Intent intent = new Intent(Intent.ACTION_VIEW);
@@ -136,7 +141,7 @@
         IMountService mountService = getMountService();
         try {
             if (mountService != null) {
-                mountService.unmountMedia(Environment.getExternalStorageDirectory().toString());
+                mountService.unmountVolume(Environment.getExternalStorageDirectory().toString());
             } else {
                 Log.e(TAG, "Mount service is null, can't unmount");
             }
@@ -146,6 +151,20 @@
         }
     }
 
+    private void mount() {
+        IMountService mountService = getMountService();
+        try {
+            if (mountService != null) {
+                mountService.mountVolume(Environment.getExternalStorageDirectory().toString());
+            } else {
+                Log.e(TAG, "Mount service is null, can't mount");
+            }
+        } catch (RemoteException ex) {
+            // Failed for some reason, try to update UI to actual state
+            updateMemoryStatus();
+        }
+    }
+
     private void updateMemoryStatus() {
         String status = Environment.getExternalStorageState();
         String readOnly = "";
@@ -166,7 +185,11 @@
                 
                 mSdSize.setSummary(formatSize(totalBlocks * blockSize));
                 mSdAvail.setSummary(formatSize(availableBlocks * blockSize) + readOnly);
-                mSdUnmount.setEnabled(true);
+
+                mSdMountToggle.setEnabled(true);
+                mSdMountToggle.setTitle(mRes.getString(R.string.sd_eject));
+                mSdMountToggle.setSummary(mRes.getString(R.string.sd_eject_summary));
+
             } catch (IllegalArgumentException e) {
                 // this can occur if the SD card is removed, but we haven't received the 
                 // ACTION_MEDIA_REMOVED Intent yet.
@@ -176,15 +199,20 @@
         } else {
             mSdSize.setSummary(mRes.getString(R.string.sd_unavailable));
             mSdAvail.setSummary(mRes.getString(R.string.sd_unavailable));
-            mSdUnmount.setEnabled(false);
+
 
             if (status.equals(Environment.MEDIA_UNMOUNTED) ||
                 status.equals(Environment.MEDIA_NOFS) ||
                 status.equals(Environment.MEDIA_UNMOUNTABLE) ) {
                 mSdFormat.setEnabled(true);
+                mSdMountToggle.setEnabled(true);
+                mSdMountToggle.setTitle(mRes.getString(R.string.sd_mount));
+                mSdMountToggle.setSummary(mRes.getString(R.string.sd_mount_summary));
+            } else {
+                mSdMountToggle.setEnabled(false);
+                mSdMountToggle.setTitle(mRes.getString(R.string.sd_mount));
+                mSdMountToggle.setSummary(mRes.getString(R.string.sd_insert_summary));
             }
-
-            
         }
 
         File path = Environment.getDataDirectory();
diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
index 737627a..a98bfed 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
@@ -271,7 +271,7 @@
                 }
                 break;
             case SCREEN:
-                addControl(R.string.sound_and_display_settings,
+                addControl(R.string.display_settings,
                         R.string.battery_sugg_display,
                         ACTION_DISPLAY_SETTINGS);
                 removeHeader = false;
@@ -330,7 +330,7 @@
         ActivityManager am = (ActivityManager)getSystemService(
                 Context.ACTIVITY_SERVICE);
         for (int i = 0; i < mPackages.length; i++) {
-            am.restartPackage(mPackages[i]);
+            am.forceStopPackage(mPackages[i]);
         }
     }
 
diff --git a/src/com/android/settings/wifi/AccessPointDialog.java b/src/com/android/settings/wifi/AccessPointDialog.java
index 4804d78..bf9a471 100644
--- a/src/com/android/settings/wifi/AccessPointDialog.java
+++ b/src/com/android/settings/wifi/AccessPointDialog.java
@@ -28,8 +28,10 @@
 import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
+import android.text.Editable;
 import android.text.InputType;
 import android.text.TextUtils;
+import android.text.TextWatcher;
 import android.text.format.Formatter;
 import android.text.method.PasswordTransformationMethod;
 import android.text.method.TransformationMethod;
@@ -38,6 +40,7 @@
 import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
+import android.widget.Button;
 import android.widget.CheckBox;
 import android.widget.EditText;
 import android.widget.Spinner;
@@ -143,8 +146,32 @@
         onFill();
 
         super.onCreate(savedInstanceState);
+
+        if (mMode == MODE_CONFIGURE) {
+            Button saveButton = getButton(mSaveButtonPos);
+            saveButton.setEnabled(false);
+            saveButton.setFocusable(false);
+        }
     }
-    
+
+    private final TextWatcher mSsidEditorWatcher = new TextWatcher() {
+        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+        }
+        public void onTextChanged(CharSequence s, int start, int before, int count) {
+            if (mSaveButtonPos != Integer.MAX_VALUE) {
+                boolean enable = true;
+                if (s.length() == 0) {
+                    enable = false;
+                }
+                Button saveButton = getButton(mSaveButtonPos);
+                saveButton.setEnabled(enable);
+                saveButton.setFocusable(enable);
+            }
+        }
+        public void afterTextChanged(Editable s) {
+        }
+    };
+
     @Override
     public void onRestoreInstanceState(Bundle savedInstanceState) {
         // Set to a class loader that can find AccessPointState
@@ -223,7 +250,7 @@
     /** Called after flags are set, the dialog's layout/etc should be set up here */
     private void onLayout() {
         final Context context = getContext();
-        final String ssid = mState.getHumanReadableSsid();
+        final String ssid = mState.ssid;
         
         int positiveButtonResId = 0;
         int negativeButtonResId = R.string.cancel;
@@ -237,7 +264,7 @@
         setInverseBackgroundForced(true);
 
         boolean defaultPasswordVisibility = true;
-        
+
         if (mMode == MODE_CONFIGURE) {
             setLayout(R.layout.wifi_ap_configure);
 
@@ -274,10 +301,10 @@
             }
         } else if (mMode == MODE_RETRY_PASSWORD) {
             setLayout(R.layout.wifi_ap_retry_password);
-            
+
             positiveButtonResId = R.string.connect;
             mConnectButtonPos = POSITIVE_BUTTON;
-            
+
             setGenericPasswordVisible(true);
             defaultPasswordVisibility = false;
         }
@@ -289,8 +316,9 @@
                 setGenericPasswordVisible(false);
             }
         }
-        
+
         setButtons(positiveButtonResId, negativeButtonResId, neutralButtonResId);
+
     }
 
     /** Called when we need to set our member variables to point to the views. */
@@ -299,6 +327,9 @@
         mPasswordEdit = (EditText) view.findViewById(R.id.password_edit);
         mSsidText = (TextView) view.findViewById(R.id.ssid_text);
         mSsidEdit = (EditText) view.findViewById(R.id.ssid_edit);
+        if (mSsidEdit != null) {
+            mSsidEdit.addTextChangedListener(mSsidEditorWatcher);
+        }
         mSecurityText = (TextView) view.findViewById(R.id.security_text);
         mSecuritySpinner = (Spinner) view.findViewById(R.id.security_spinner);
         mWepTypeSpinner = (Spinner) view.findViewById(R.id.wep_type_spinner);
@@ -439,7 +470,7 @@
             }
             
         } else if (mMode == MODE_CONFIGURE) {
-            String ssid = mState.getHumanReadableSsid();
+            String ssid = mState.ssid;
             if (!TextUtils.isEmpty(ssid)) {
                 mSsidEdit.setText(ssid);
             }
@@ -601,15 +632,24 @@
             updateEnterpriseFields();
         }
 
+        /**
+         * AP state on the current scan list needs update to enable "Forget" capability.
+         * This is not required for newly added APs.
+         */
+        AccessPointState ap = mWifiLayer.getWifiLayerApInstance(mState);
+        if(ap != null) {
+            ap.setConfigured(true);
+        }
+
         if (!mWifiLayer.saveNetwork(mState)) {
             return;
         }
-        
+
         // Connect right away if they've touched it
         if (!mWifiLayer.connectToNetwork(mState)) {
             return;
         }
-        
+
     }
     
     private int getSelectionIndex(String[] array, String selection) {
diff --git a/src/com/android/settings/wifi/AccessPointPreference.java b/src/com/android/settings/wifi/AccessPointPreference.java
index 6dd5492..0c5d6df 100644
--- a/src/com/android/settings/wifi/AccessPointPreference.java
+++ b/src/com/android/settings/wifi/AccessPointPreference.java
@@ -48,7 +48,7 @@
     }
     
     public void refresh() {
-        setTitle(mState.getHumanReadableSsid());
+        setTitle(mState.ssid);
         setSummary(mState.getSummarizedStatus());
 
         notifyChanged();
diff --git a/src/com/android/settings/wifi/AccessPointState.java b/src/com/android/settings/wifi/AccessPointState.java
index 5aefa55..1c3ef95 100644
--- a/src/com/android/settings/wifi/AccessPointState.java
+++ b/src/com/android/settings/wifi/AccessPointState.java
@@ -166,12 +166,6 @@
         if (TextUtils.isEmpty(string)) {
             return "";
         }
-        
-        final int lastPos = string.length() - 1;
-        if (lastPos < 0 || (string.charAt(0) == '"' && string.charAt(lastPos) == '"')) {
-            return string;
-        }
-        
         return "\"" + string + "\"";
     }
     
@@ -209,23 +203,10 @@
             requestRefresh();
         }
     }
-    
-    public String getHumanReadableSsid() {
-        if (TextUtils.isEmpty(ssid)) {
-            return "";
-        }
-        
-        final int lastPos = ssid.length() - 1;
-        if (ssid.charAt(0) == '"' && ssid.charAt(lastPos) == '"') {
-            return ssid.substring(1, lastPos);
-        }
-        
-        return ssid;
-    }
-    
+   
     public void setSsid(String ssid) {
         if (ssid != null) {
-            this.ssid = convertToQuotedString(ssid);
+            this.ssid = ssid;
             requestRefresh();
         }
     }
@@ -478,41 +459,40 @@
         config.BSSID = getWpaSupplicantBssid();
         config.priority = priority;
         config.hiddenSSID = hiddenSsid;
-        config.SSID = convertToQuotedString(ssid);
+        config.SSID = ssid;
         config.eap.setValue(mEap);
 
         if (!TextUtils.isEmpty(mPhase2)) {
-            config.phase2.setValue(convertToQuotedString("auth=" + mPhase2));
+            config.phase2.setValue("auth=" + mPhase2);
         } else {
             config.phase2.setValue(null);
         }
         if (!TextUtils.isEmpty(mEnterpriseFields[IDENTITY])) {
-            config.identity.setValue(
-                    convertToQuotedString(mEnterpriseFields[IDENTITY]));
+            config.identity.setValue(mEnterpriseFields[IDENTITY]);
         } else {
             config.identity.setValue(null);
         }
         if (!TextUtils.isEmpty(mEnterpriseFields[ANONYMOUS_IDENTITY])) {
-            config.anonymous_identity.setValue(convertToQuotedString(
-                    mEnterpriseFields[ANONYMOUS_IDENTITY]));
+            config.anonymous_identity.setValue(
+                    mEnterpriseFields[ANONYMOUS_IDENTITY]);
         } else {
             config.anonymous_identity.setValue(null);
         }
         if (!TextUtils.isEmpty(mEnterpriseFields[CLIENT_CERT])) {
-            config.client_cert.setValue(convertToQuotedString(
-                    mEnterpriseFields[CLIENT_CERT]));
+            config.client_cert.setValue(
+                    mEnterpriseFields[CLIENT_CERT]);
         } else {
             config.client_cert.setValue(null);
         }
         if (!TextUtils.isEmpty(mEnterpriseFields[CA_CERT])) {
-            config.ca_cert.setValue(convertToQuotedString(
-                    mEnterpriseFields[CA_CERT]));
+            config.ca_cert.setValue(
+                    mEnterpriseFields[CA_CERT]);
         } else {
             config.ca_cert.setValue(null);
         }
         if (!TextUtils.isEmpty(mEnterpriseFields[PRIVATE_KEY])) {
-            config.private_key.setValue(convertToQuotedString(
-                    mEnterpriseFields[PRIVATE_KEY]));
+            config.private_key.setValue(
+                    mEnterpriseFields[PRIVATE_KEY]);
         } else {
             config.private_key.setValue(null);
         }
@@ -565,7 +545,7 @@
             config.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
             config.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
             if (!TextUtils.isEmpty(mPassword)) {
-                config.password.setValue(convertToQuotedString(mPassword));
+                config.password.setValue(mPassword);
             }
         } else if (security.equals(OPEN)) {
             config.allowedKeyManagement.set(KeyMgmt.NONE);
diff --git a/src/com/android/settings/wifi/Summary.java b/src/com/android/settings/wifi/Summary.java
new file mode 100644
index 0000000..6da2fa5
--- /dev/null
+++ b/src/com/android/settings/wifi/Summary.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi;
+
+import com.android.settings.R;
+
+import android.content.Context;
+import android.net.NetworkInfo.DetailedState;
+import android.text.TextUtils;
+
+class Summary {
+    static String get(Context context, String ssid, DetailedState state) {
+        String[] formats = context.getResources().getStringArray((ssid == null)
+                ? R.array.wifi_status : R.array.wifi_status_with_ssid);
+        int index = state.ordinal();
+
+        if (index >= formats.length || formats[index].length() == 0) {
+            return null;
+        }
+        return String.format(formats[index], ssid);
+    }
+
+    static String get(Context context, DetailedState state) {
+        return get(context, null, state);
+    }
+}
diff --git a/src/com/android/settings/wifi/WifiAPITest.java b/src/com/android/settings/wifi/WifiAPITest.java
new file mode 100644
index 0000000..4a9a075
--- /dev/null
+++ b/src/com/android/settings/wifi/WifiAPITest.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi;
+
+import com.android.settings.R;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.net.wifi.WifiManager;
+
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceScreen;
+import android.text.Editable;
+import android.widget.EditText;
+
+
+/**
+ * Provide an interface for testing out the Wifi API
+ */
+public class WifiAPITest extends PreferenceActivity implements
+Preference.OnPreferenceClickListener {
+
+    private static final String TAG = "WifiAPITest";
+    private int netid;
+
+    //============================
+    // Preference/activity member variables
+    //============================
+
+    private static final String KEY_DISCONNECT = "disconnect";
+    private static final String KEY_DISABLE_NETWORK = "disable_network";
+    private static final String KEY_ENABLE_NETWORK = "enable_network";
+
+    private Preference mWifiDisconnect;
+    private Preference mWifiDisableNetwork;
+    private Preference mWifiEnableNetwork;
+
+    private WifiManager mWifiManager;
+
+
+    //============================
+    // Activity lifecycle
+    //============================
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        onCreatePreferences();
+        mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
+    }
+
+
+    private void onCreatePreferences() {
+        addPreferencesFromResource(R.layout.wifi_api_test);
+
+        final PreferenceScreen preferenceScreen = getPreferenceScreen();
+
+        mWifiDisconnect = (Preference) preferenceScreen.findPreference(KEY_DISCONNECT);
+        mWifiDisconnect.setOnPreferenceClickListener(this);
+
+        mWifiDisableNetwork = (Preference) preferenceScreen.findPreference(KEY_DISABLE_NETWORK);
+        mWifiDisableNetwork.setOnPreferenceClickListener(this);
+
+        mWifiEnableNetwork = (Preference) preferenceScreen.findPreference(KEY_ENABLE_NETWORK);
+        mWifiEnableNetwork.setOnPreferenceClickListener(this);
+
+    }
+
+    //============================
+    // Preference callbacks
+    //============================
+
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+        super.onPreferenceTreeClick(preferenceScreen, preference);
+        return false;
+    }
+
+    /**
+     *  Implements OnPreferenceClickListener interface
+     */
+    public boolean onPreferenceClick(Preference pref) {
+        if (pref == mWifiDisconnect) {
+            mWifiManager.disconnect();
+        } else if (pref == mWifiDisableNetwork) {
+            AlertDialog.Builder alert = new AlertDialog.Builder(this);
+            alert.setTitle("Input");
+            alert.setMessage("Enter Network ID");
+            // Set an EditText view to get user input
+            final EditText input = new EditText(this);
+            alert.setView(input);
+            alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int whichButton) {
+                    Editable value = input.getText();
+                    netid = Integer.parseInt(value.toString());
+                    mWifiManager.disableNetwork(netid);
+                    }
+                    });
+            alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int whichButton) {
+                    // Canceled.
+                    }
+                    });
+            alert.show();
+        } else if (pref == mWifiEnableNetwork) {
+            AlertDialog.Builder alert = new AlertDialog.Builder(this);
+            alert.setTitle("Input");
+            alert.setMessage("Enter Network ID");
+            // Set an EditText view to get user input
+            final EditText input = new EditText(this);
+            alert.setView(input);
+            alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int whichButton) {
+                    Editable value = input.getText();
+                    netid =  Integer.parseInt(value.toString());
+                    mWifiManager.enableNetwork(netid, false);
+                    }
+                    });
+            alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int whichButton) {
+                    // Canceled.
+                    }
+                    });
+            alert.show();
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/settings/wifi/WifiConfigInfo.java b/src/com/android/settings/wifi/WifiConfigInfo.java
new file mode 100644
index 0000000..2ed4f02
--- /dev/null
+++ b/src/com/android/settings/wifi/WifiConfigInfo.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi;
+
+import android.app.Activity;
+import android.net.wifi.WifiManager;
+import android.os.Bundle;
+import android.widget.TextView;
+import android.net.wifi.WifiConfiguration;
+import java.util.List;
+
+import com.android.settings.R;
+
+
+/**
+ * Configuration details saved by the user on the WifiSettings screen
+ */
+public class WifiConfigInfo extends Activity {
+
+    private static final String TAG = "WifiConfigInfo";
+
+    private TextView mConfigList;
+    private WifiManager mWifiManager;
+
+    //============================
+    // Activity lifecycle
+    //============================
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
+        setContentView(R.layout.wifi_config_info);
+        mConfigList = (TextView) findViewById(R.id.config_list);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        final List<WifiConfiguration> wifiConfigs = mWifiManager.getConfiguredNetworks();
+        StringBuffer configList  = new StringBuffer();
+        for (int i = wifiConfigs.size() - 1; i >= 0; i--) {
+            configList.append(wifiConfigs.get(i));
+        }
+        mConfigList.setText(configList);
+    }
+
+}
diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java
index 10a672b..7ede80d 100644
--- a/src/com/android/settings/wifi/WifiEnabler.java
+++ b/src/com/android/settings/wifi/WifiEnabler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007 The Android Open Source Project
+ * Copyright (C) 2010 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,174 +16,133 @@
 
 package com.android.settings.wifi;
 
-import static android.net.wifi.WifiManager.WIFI_STATE_DISABLED;
-import static android.net.wifi.WifiManager.WIFI_STATE_DISABLING;
-import static android.net.wifi.WifiManager.WIFI_STATE_ENABLED;
-import static android.net.wifi.WifiManager.WIFI_STATE_ENABLING;
-import static android.net.wifi.WifiManager.WIFI_STATE_UNKNOWN;
-
 import com.android.settings.R;
-import com.android.settings.AirplaneModeEnabler;
+import com.android.settings.WirelessSettings;
 
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.net.NetworkInfo;
+import android.net.wifi.SupplicantState;
+import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.preference.Preference;
 import android.preference.CheckBoxPreference;
 import android.provider.Settings;
 import android.text.TextUtils;
-import android.util.Config;
-import android.util.Log;
+import android.widget.Toast;
 
 public class WifiEnabler implements Preference.OnPreferenceChangeListener {
-    
-    private static final boolean LOCAL_LOGD = Config.LOGD || WifiLayer.LOGV;
-    private static final String TAG = "SettingsWifiEnabler";
-    
     private final Context mContext; 
-    private final WifiManager mWifiManager;
-    private final CheckBoxPreference mWifiCheckBoxPref;
+    private final CheckBoxPreference mCheckBox;
     private final CharSequence mOriginalSummary;
-    
-    private final IntentFilter mWifiStateFilter;
-    private final BroadcastReceiver mWifiStateReceiver = new BroadcastReceiver() {
 
+    private final WifiManager mWifiManager;
+    private final IntentFilter mIntentFilter;
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
-            if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
-                handleWifiStateChanged(
-                        intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WIFI_STATE_UNKNOWN),
-                        intent.getIntExtra(WifiManager.EXTRA_PREVIOUS_WIFI_STATE,
-                                WIFI_STATE_UNKNOWN));
-            } else if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
-                handleNetworkStateChanged(
-                        (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO));
+            String action = intent.getAction();
+            if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
+                handleWifiStateChanged(intent.getIntExtra(
+                        WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN));
+            } else if (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION.equals(action)) {
+                handleStateChanged(WifiInfo.getDetailedStateOf((SupplicantState)
+                        intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)));
+            } else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
+                handleStateChanged(((NetworkInfo) intent.getParcelableExtra(
+                        WifiManager.EXTRA_NETWORK_INFO)).getDetailedState());
             }
         }
     };
+
+    public WifiEnabler(Context context, CheckBoxPreference checkBox) {
+        this(context, (WifiManager) context.getSystemService(Context.WIFI_SERVICE),
+                checkBox);
+    }
     
     public WifiEnabler(Context context, WifiManager wifiManager,
-            CheckBoxPreference wifiCheckBoxPreference) {
+            CheckBoxPreference checkBox) {
         mContext = context;
-        mWifiCheckBoxPref = wifiCheckBoxPreference;
+        mCheckBox = checkBox;
         mWifiManager = wifiManager;
+        mOriginalSummary = checkBox.getSummary();
+        checkBox.setPersistent(false);
         
-        mOriginalSummary = wifiCheckBoxPreference.getSummary();
-        wifiCheckBoxPreference.setPersistent(false);
-        
-        mWifiStateFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
-        mWifiStateFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
+        mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
+        // The order matters! We really should not depend on this. :(
+        mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
+        mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
     }
 
     public void resume() {
-        int state = mWifiManager.getWifiState();
-        // This is the widget enabled state, not the preference toggled state
-        mWifiCheckBoxPref.setEnabled(state == WIFI_STATE_ENABLED || state == WIFI_STATE_DISABLED
-                || state == WIFI_STATE_UNKNOWN);
-
-        mContext.registerReceiver(mWifiStateReceiver, mWifiStateFilter);
-        mWifiCheckBoxPref.setOnPreferenceChangeListener(this);
+        // Wi-Fi state is sticky, so just let the receiver update UI
+        mContext.registerReceiver(mReceiver, mIntentFilter);
+        mCheckBox.setOnPreferenceChangeListener(this);
     }
     
     public void pause() {
-        mContext.unregisterReceiver(mWifiStateReceiver);
-        mWifiCheckBoxPref.setOnPreferenceChangeListener(null);
+        mContext.unregisterReceiver(mReceiver);
+        mCheckBox.setOnPreferenceChangeListener(null);
     }
     
     public boolean onPreferenceChange(Preference preference, Object value) {
-        // Turn on/off Wi-Fi
-        setWifiEnabled((Boolean) value);
-        
+        boolean enable = (Boolean) value;
+    
+        // Show toast message if Wi-Fi is not allowed in airplane mode
+        if (enable && !WirelessSettings
+                .isRadioAllowed(mContext, Settings.System.RADIO_WIFI)) {
+            Toast.makeText(mContext, R.string.wifi_in_airplane_mode,
+                    Toast.LENGTH_SHORT).show();
+            return false;
+        }
+
+        if (mWifiManager.setWifiEnabled(enable)) {
+            mCheckBox.setEnabled(false);
+        } else {
+            mCheckBox.setSummary(R.string.wifi_error);
+        }
+
         // Don't update UI to opposite state until we're sure
         return false;
     }
     
-    private void setWifiEnabled(final boolean enable) {
-        // Disable button
-        mWifiCheckBoxPref.setEnabled(false);
-        
-        if (!mWifiManager.setWifiEnabled(enable)) {
-            mWifiCheckBoxPref.setSummary(enable ? R.string.error_starting : R.string.error_stopping);
-        }
-    }
-    
-    private void handleWifiStateChanged(int wifiState, int previousWifiState) {
-
-        if (LOCAL_LOGD) {
-            Log.d(TAG, "Received wifi state changed from "
-                    + getHumanReadableWifiState(previousWifiState) + " to "
-                    + getHumanReadableWifiState(wifiState));
-        }
-        
-        if (wifiState == WIFI_STATE_DISABLED || wifiState == WIFI_STATE_ENABLED) {
-            mWifiCheckBoxPref.setChecked(wifiState == WIFI_STATE_ENABLED);
-            mWifiCheckBoxPref
-                    .setSummary(wifiState == WIFI_STATE_DISABLED ? mOriginalSummary : null);
-            
-            mWifiCheckBoxPref.setEnabled(isWifiAllowed(mContext));
-            
-        } else if (wifiState == WIFI_STATE_DISABLING || wifiState == WIFI_STATE_ENABLING) {
-            mWifiCheckBoxPref.setSummary(wifiState == WIFI_STATE_ENABLING ? R.string.wifi_starting
-                    : R.string.wifi_stopping);
-            
-        } else if (wifiState == WIFI_STATE_UNKNOWN) {
-            int message = R.string.wifi_error;
-            if (previousWifiState == WIFI_STATE_ENABLING) message = R.string.error_starting;
-            else if (previousWifiState == WIFI_STATE_DISABLING) message = R.string.error_stopping;
-            
-            mWifiCheckBoxPref.setChecked(false);
-            mWifiCheckBoxPref.setSummary(message);
-            mWifiCheckBoxPref.setEnabled(true);
-        }
-    }
-
-    private void handleNetworkStateChanged(NetworkInfo networkInfo) {
-
-        if (LOCAL_LOGD) {
-            Log.d(TAG, "Received network state changed to " + networkInfo);
-        }
-        
-        if (mWifiManager.isWifiEnabled()) {
-            String summary = WifiStatus.getStatus(mContext, 
-                    mWifiManager.getConnectionInfo().getSSID(), networkInfo.getDetailedState());
-            mWifiCheckBoxPref.setSummary(summary);
-        }
-    }
-
-    private static boolean isWifiAllowed(Context context) {
-        // allowed if we are not in airplane mode
-        if (!AirplaneModeEnabler.isAirplaneModeOn(context)) {
-            return true;
-        }
-        // allowed if wifi is not in AIRPLANE_MODE_RADIOS
-        String radios = Settings.System.getString(context.getContentResolver(),
-                Settings.System.AIRPLANE_MODE_RADIOS);
-        if (radios == null || !radios.contains(Settings.System.RADIO_WIFI)) {
-            return true;
-        }
-        // allowed if wifi is in AIRPLANE_MODE_TOGGLEABLE_RADIOS
-        radios = Settings.System.getString(context.getContentResolver(),
-                Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
-        return (radios != null && radios.contains(Settings.System.RADIO_WIFI));
-    }
-
-    private static String getHumanReadableWifiState(int wifiState) {
-        switch (wifiState) {
-            case WIFI_STATE_DISABLED:
-                return "Disabled";
-            case WIFI_STATE_DISABLING:
-                return "Disabling";
-            case WIFI_STATE_ENABLED:
-                return "Enabled";
-            case WIFI_STATE_ENABLING:
-                return "Enabling";
-            case WIFI_STATE_UNKNOWN:
-                return "Unknown";
+    private void handleWifiStateChanged(int state) {
+        switch (state) {
+            case WifiManager.WIFI_STATE_ENABLING:
+                mCheckBox.setSummary(R.string.wifi_starting);
+                mCheckBox.setEnabled(false);
+                break;
+            case WifiManager.WIFI_STATE_ENABLED:
+                mCheckBox.setChecked(true);
+                mCheckBox.setSummary(null);
+                mCheckBox.setEnabled(true);
+                break;
+            case WifiManager.WIFI_STATE_DISABLING:
+                mCheckBox.setSummary(R.string.wifi_stopping);
+                mCheckBox.setEnabled(false);
+                break;
+            case WifiManager.WIFI_STATE_DISABLED:
+                mCheckBox.setChecked(false);
+                mCheckBox.setSummary(mOriginalSummary);
+                mCheckBox.setEnabled(true);
+                break;
             default:
-                return "Some other state!";    
+                mCheckBox.setChecked(false);
+                mCheckBox.setSummary(R.string.wifi_error);
+                mCheckBox.setEnabled(true);
+        }
+    }
+
+    private void handleStateChanged(NetworkInfo.DetailedState state) {
+        // WifiInfo is valid if and only if Wi-Fi is enabled.
+        // Here we use the state of the check box as an optimization.
+        if (state != null && mCheckBox.isChecked()) {
+            WifiInfo info = mWifiManager.getConnectionInfo();
+            if (info != null) {
+                mCheckBox.setSummary(Summary.get(mContext, info.getSSID(), state));
+            }
         }
     }
 }
diff --git a/src/com/android/settings/wifi/WifiInfo.java b/src/com/android/settings/wifi/WifiInfo.java
new file mode 100644
index 0000000..291a495
--- /dev/null
+++ b/src/com/android/settings/wifi/WifiInfo.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi;
+
+import com.android.settings.R;
+
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+
+
+/**
+ * Wifi information menu item on the diagnostic screen
+ */
+public class WifiInfo extends PreferenceActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.testing_wifi_settings);
+    }
+
+}
diff --git a/src/com/android/settings/wifi/WifiLayer.java b/src/com/android/settings/wifi/WifiLayer.java
index ce518e1..0281cb0 100644
--- a/src/com/android/settings/wifi/WifiLayer.java
+++ b/src/com/android/settings/wifi/WifiLayer.java
@@ -749,7 +749,6 @@
                     // We already know about this one
                     continue;
                 }
-    
                 ap = new AccessPointState(mContext);
                 ap.updateFromWifiConfiguration(config);
                 if (LOGV) Log.v(TAG, "Created " + ap + " in loadConfiguredAccessPoints");
@@ -1152,7 +1151,7 @@
                         continue;
                     }
                     
-                    final String ssid = AccessPointState.convertToQuotedString(scanResult.SSID);
+                    final String ssid = scanResult.SSID;
                     String security = AccessPointState.getScanResultSecurity(scanResult);
                     
                     // See if this AP is part of a group of APs (e.g., any large
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index cac77e3..04f6aa4 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -192,6 +192,9 @@
         if (mWifiEnabler != null) {
             mWifiEnabler.pause();
         }
+        if (mDialog != null) {
+            mDialog.dismiss();
+        }
     }
 
     @Override
@@ -276,8 +279,7 @@
         if (state == null) {
             return;
         }
-
-        menu.setHeaderTitle(state.getHumanReadableSsid());
+        menu.setHeaderTitle(state.ssid);
 
         if (state.isConnectable()) {
             menu.add(0, CONTEXT_MENU_ID_CONNECT, 0, R.string.wifi_context_menu_connect);
diff --git a/src/com/android/settings/wifi/WifiStatusTest.java b/src/com/android/settings/wifi/WifiStatusTest.java
new file mode 100644
index 0000000..e440a33
--- /dev/null
+++ b/src/com/android/settings/wifi/WifiStatusTest.java
@@ -0,0 +1,408 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi;
+
+import com.android.settings.R;
+import com.android.settings.wifi.WifiStatus;
+import android.net.wifi.ScanResult;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
+import java.util.List;
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.NetworkInfo;
+import android.net.wifi.SupplicantState;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.TextView;
+import java.io.IOException;
+import java.net.UnknownHostException;
+
+
+/**
+ * Show the current status details of Wifi related fields
+ */
+public class WifiStatusTest extends Activity {
+
+    private static final String TAG = "WifiStatusTest";
+
+    private Button updateButton;
+    private TextView mWifiState;
+    private TextView mNetworkState;
+    private TextView mSupplicantState;
+    private TextView mRSSI;
+    private TextView mBSSID;
+    private TextView mSSID;
+    private TextView mHiddenSSID;
+    private TextView mIPAddr;
+    private TextView mMACAddr;
+    private TextView mNetworkId;
+    private TextView mLinkSpeed;
+    private TextView mScanList;
+
+
+    private TextView mPingIpAddr;
+    private TextView mPingHostname;
+    private TextView mHttpClientTest;
+    private Button pingTestButton;
+
+    private String mPingIpAddrResult;
+    private String mPingHostnameResult;
+    private String mHttpClientTestResult;
+
+
+    private WifiManager mWifiManager;
+    private IntentFilter mWifiStateFilter;
+
+
+    //============================
+    // Activity lifecycle
+    //============================
+
+    private final BroadcastReceiver mWifiStateReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
+                handleWifiStateChanged(intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
+                            WifiManager.WIFI_STATE_UNKNOWN));
+            } else if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
+                handleNetworkStateChanged(
+                        (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO));
+            } else if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
+                handleScanResultsAvailable();
+            } else if (intent.getAction().equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) {
+                /* TODO: handle supplicant connection change later */
+            } else if (intent.getAction().equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) {
+                handleSupplicantStateChanged(
+                        (SupplicantState) intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE),
+                        intent.hasExtra(WifiManager.EXTRA_SUPPLICANT_ERROR),
+                        intent.getIntExtra(WifiManager.EXTRA_SUPPLICANT_ERROR, 0));
+            } else if (intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION)) {
+                handleSignalChanged(intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, 0));
+            } else if (intent.getAction().equals(WifiManager.NETWORK_IDS_CHANGED_ACTION)) {
+                /* TODO: handle network id change info later */
+            } else {
+                Log.e(TAG, "Received an unknown Wifi Intent");
+            }
+        }
+    };
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
+
+        mWifiStateFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
+        mWifiStateFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
+        mWifiStateFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
+        mWifiStateFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
+        mWifiStateFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
+        mWifiStateFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
+
+        registerReceiver(mWifiStateReceiver, mWifiStateFilter);
+
+        setContentView(R.layout.wifi_status_test);
+
+        updateButton = (Button) findViewById(R.id.update);
+        updateButton.setOnClickListener(updateButtonHandler);
+
+        mWifiState = (TextView) findViewById(R.id.wifi_state);
+        mNetworkState = (TextView) findViewById(R.id.network_state);
+        mSupplicantState = (TextView) findViewById(R.id.supplicant_state);
+        mRSSI = (TextView) findViewById(R.id.rssi);
+        mBSSID = (TextView) findViewById(R.id.bssid);
+        mSSID = (TextView) findViewById(R.id.ssid);
+        mHiddenSSID = (TextView) findViewById(R.id.hidden_ssid);
+        mIPAddr = (TextView) findViewById(R.id.ipaddr);
+        mMACAddr = (TextView) findViewById(R.id.macaddr);
+        mNetworkId = (TextView) findViewById(R.id.networkid);
+        mLinkSpeed = (TextView) findViewById(R.id.link_speed);
+        mScanList = (TextView) findViewById(R.id.scan_list);
+
+
+        mPingIpAddr = (TextView) findViewById(R.id.pingIpAddr);
+        mPingHostname = (TextView) findViewById(R.id.pingHostname);
+        mHttpClientTest = (TextView) findViewById(R.id.httpClientTest);
+
+        pingTestButton = (Button) findViewById(R.id.ping_test);
+        pingTestButton.setOnClickListener(mPingButtonHandler);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        registerReceiver(mWifiStateReceiver, mWifiStateFilter);
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        unregisterReceiver(mWifiStateReceiver);
+    }
+
+    OnClickListener mPingButtonHandler = new OnClickListener() {
+        public void onClick(View v) {
+            updatePingState();
+        }
+    };
+
+    OnClickListener updateButtonHandler = new OnClickListener() {
+        public void onClick(View v) {
+            final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
+
+            setWifiStateText(mWifiManager.getWifiState());
+            mBSSID.setText(wifiInfo.getBSSID());
+            mHiddenSSID.setText(String.valueOf(wifiInfo.getHiddenSSID()));
+            int ipAddr = wifiInfo.getIpAddress();
+            StringBuffer ipBuf = new StringBuffer();
+            ipBuf.append(ipAddr  & 0xff).append('.').
+                append((ipAddr >>>= 8) & 0xff).append('.').
+                append((ipAddr >>>= 8) & 0xff).append('.').
+                append((ipAddr >>>= 8) & 0xff);
+
+            mIPAddr.setText(ipBuf);
+            mLinkSpeed.setText(String.valueOf(wifiInfo.getLinkSpeed())+" Mbps");
+            mMACAddr.setText(wifiInfo.getMacAddress());
+            mNetworkId.setText(String.valueOf(wifiInfo.getNetworkId()));
+            mRSSI.setText(String.valueOf(wifiInfo.getRssi()));
+            mSSID.setText(wifiInfo.getSSID());
+
+            SupplicantState supplicantState = wifiInfo.getSupplicantState();
+            setSupplicantStateText(supplicantState);
+        }
+    };
+
+    private void setSupplicantStateText(SupplicantState supplicantState) {
+        if(SupplicantState.FOUR_WAY_HANDSHAKE.equals(supplicantState)) {
+            mSupplicantState.setText("FOUR WAY HANDSHAKE");
+        } else if(SupplicantState.ASSOCIATED.equals(supplicantState)) {
+            mSupplicantState.setText("ASSOCIATED");
+        } else if(SupplicantState.ASSOCIATING.equals(supplicantState)) {
+            mSupplicantState.setText("ASSOCIATING");
+        } else if(SupplicantState.COMPLETED.equals(supplicantState)) {
+            mSupplicantState.setText("COMPLETED");
+        } else if(SupplicantState.DISCONNECTED.equals(supplicantState)) {
+            mSupplicantState.setText("DISCONNECTED");
+        } else if(SupplicantState.DORMANT.equals(supplicantState)) {
+            mSupplicantState.setText("DORMANT");
+        } else if(SupplicantState.GROUP_HANDSHAKE.equals(supplicantState)) {
+            mSupplicantState.setText("GROUP HANDSHAKE");
+        } else if(SupplicantState.INACTIVE.equals(supplicantState)) {
+            mSupplicantState.setText("INACTIVE");
+        } else if(SupplicantState.INVALID.equals(supplicantState)) {
+            mSupplicantState.setText("INVALID");
+        } else if(SupplicantState.SCANNING.equals(supplicantState)) {
+            mSupplicantState.setText("SCANNING");
+        } else if(SupplicantState.UNINITIALIZED.equals(supplicantState)) {
+            mSupplicantState.setText("UNINITIALIZED");
+        } else {
+            mSupplicantState.setText("BAD");
+            Log.e(TAG, "supplicant state is bad");
+        }
+    }
+
+    private void setWifiStateText(int wifiState) {
+        String wifiStateString;
+        switch(wifiState) {
+            case WifiManager.WIFI_STATE_DISABLING:
+                wifiStateString = getString(R.string.wifi_state_disabling);
+                break;
+            case WifiManager.WIFI_STATE_DISABLED:
+                wifiStateString = getString(R.string.wifi_state_disabled);
+                break;
+            case WifiManager.WIFI_STATE_ENABLING:
+                wifiStateString = getString(R.string.wifi_state_enabling);
+                break;
+            case WifiManager.WIFI_STATE_ENABLED:
+                wifiStateString = getString(R.string.wifi_state_enabled);
+                break;
+            case WifiManager.WIFI_STATE_UNKNOWN:
+                wifiStateString = getString(R.string.wifi_state_unknown);
+                break;
+            default:
+                wifiStateString = "BAD";
+                Log.e(TAG, "wifi state is bad");
+                break;
+        }
+
+        mWifiState.setText(wifiStateString);
+    }
+
+    private void handleSignalChanged(int rssi) {
+        mRSSI.setText(String.valueOf(rssi));
+    }
+
+    private void handleWifiStateChanged(int wifiState) {
+        setWifiStateText(wifiState);
+    }
+
+    private void handleScanResultsAvailable() {
+        List<ScanResult> list = mWifiManager.getScanResults();
+
+        StringBuffer scanList = new StringBuffer();
+        if (list != null) {
+            for (int i = list.size() - 1; i >= 0; i--) {
+                final ScanResult scanResult = list.get(i);
+
+                if (scanResult == null) {
+                    continue;
+                }
+
+                if (TextUtils.isEmpty(scanResult.SSID)) {
+                    continue;
+                }
+
+                scanList.append(scanResult.SSID+" ");
+            }
+        }
+        mScanList.setText(scanList);
+    }
+
+    private void handleSupplicantStateChanged(SupplicantState state, boolean hasError, int error) {
+        if (hasError) {
+            mSupplicantState.setText("ERROR AUTHENTICATING");
+        } else {
+            setSupplicantStateText(state);
+        }
+    }
+
+    private void handleNetworkStateChanged(NetworkInfo networkInfo) {
+        if (mWifiManager.isWifiEnabled()) {
+            String summary = WifiStatus.getStatus(this,
+                    mWifiManager.getConnectionInfo().getSSID(), networkInfo.getDetailedState());
+            mNetworkState.setText(summary);
+        }
+    }
+
+    private final void updatePingState() {
+        final Handler handler = new Handler();
+        // Set all to unknown since the threads will take a few secs to update.
+        mPingIpAddrResult = getResources().getString(R.string.radioInfo_unknown);
+        mPingHostnameResult = getResources().getString(R.string.radioInfo_unknown);
+        mHttpClientTestResult = getResources().getString(R.string.radioInfo_unknown);
+
+        mPingIpAddr.setText(mPingIpAddrResult);
+        mPingHostname.setText(mPingHostnameResult);
+        mHttpClientTest.setText(mHttpClientTestResult);
+
+        final Runnable updatePingResults = new Runnable() {
+            public void run() {
+                mPingIpAddr.setText(mPingIpAddrResult);
+                mPingHostname.setText(mPingHostnameResult);
+                mHttpClientTest.setText(mHttpClientTestResult);
+            }
+        };
+        Thread ipAddrThread = new Thread() {
+            @Override
+            public void run() {
+                pingIpAddr();
+                handler.post(updatePingResults);
+            }
+        };
+        ipAddrThread.start();
+
+        Thread hostnameThread = new Thread() {
+            @Override
+            public void run() {
+                pingHostname();
+                handler.post(updatePingResults);
+            }
+        };
+        hostnameThread.start();
+
+        Thread httpClientThread = new Thread() {
+            @Override
+            public void run() {
+                httpClientTest();
+                handler.post(updatePingResults);
+            }
+        };
+        httpClientThread.start();
+    }
+
+    /**
+     * The ping functions have been borrowed from Radio diagnostic app to
+     * enable quick access on the wifi status screen
+     */
+    private final void pingIpAddr() {
+        try {
+            // TODO: Hardcoded for now, make it UI configurable
+            String ipAddress = "74.125.47.104";
+            Process p = Runtime.getRuntime().exec("ping -c 1 -w 100 " + ipAddress);
+            int status = p.waitFor();
+            if (status == 0) {
+                mPingIpAddrResult = "Pass";
+            } else {
+                mPingIpAddrResult = "Fail: IP addr not reachable";
+            }
+        } catch (IOException e) {
+            mPingIpAddrResult = "Fail: IOException";
+        } catch (InterruptedException e) {
+            mPingIpAddrResult = "Fail: InterruptedException";
+        }
+    }
+
+    private final void pingHostname() {
+        try {
+            // TODO: Hardcoded for now, make it UI configurable
+            Process p = Runtime.getRuntime().exec("ping -c 1 -w 100 www.google.com");
+            int status = p.waitFor();
+            if (status == 0) {
+                mPingHostnameResult = "Pass";
+            } else {
+                mPingHostnameResult = "Fail: Host unreachable";
+            }
+        } catch (UnknownHostException e) {
+            mPingHostnameResult = "Fail: Unknown Host";
+        } catch (IOException e) {
+            mPingHostnameResult= "Fail: IOException";
+        } catch (InterruptedException e) {
+            mPingHostnameResult = "Fail: InterruptedException";
+        }
+    }
+
+    private void httpClientTest() {
+        HttpClient client = new DefaultHttpClient();
+        try {
+            // TODO: Hardcoded for now, make it UI configurable
+            HttpGet request = new HttpGet("http://www.google.com");
+            HttpResponse response = client.execute(request);
+            if (response.getStatusLine().getStatusCode() == 200) {
+                mHttpClientTestResult = "Pass";
+            } else {
+                mHttpClientTestResult = "Fail: Code: " + String.valueOf(response);
+            }
+            request.abort();
+        } catch (IOException e) {
+            mHttpClientTestResult = "Fail: IOException";
+        }
+    }
+
+}
diff --git a/tests/res/layout/bluetooth_request_permission_test.xml b/tests/res/layout/bluetooth_request_permission_test.xml
index 8bb0daa..4d54544 100644
--- a/tests/res/layout/bluetooth_request_permission_test.xml
+++ b/tests/res/layout/bluetooth_request_permission_test.xml
@@ -16,18 +16,18 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <ListView android:id="@+id/msg_container"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="0dip"
         android:layout_weight="1"
         android:transcriptMode="normal"/>
 
     <LinearLayout
         android:orientation="horizontal"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         style="@android:style/ButtonBar">