am 8815f032: Merge "Always set right auth_type value in apn."

Merge commit '8815f03202abf3117b6a1f6a058a835915ddae04' into gingerbread-plus-aosp

* commit '8815f03202abf3117b6a1f6a058a835915ddae04':
  Always set right auth_type value in apn.
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 1f9ebe4..687a5a2 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -14,6 +14,7 @@
     <uses-permission android:name="android.permission.VIBRATE" />
     <uses-permission android:name="android.permission.BLUETOOTH" />
     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+    <uses-permission android:name="android.permission.NFC" />
     <uses-permission android:name="android.permission.HARDWARE_TEST" />
     <uses-permission android:name="android.permission.CALL_PHONE" />
     <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
@@ -47,7 +48,8 @@
 
         <!-- Settings -->
 
-        <activity android:name="Settings" android:label="@string/settings_label"
+        <activity android:name="Settings"
+                android:label="@string/settings_label_launcher"
                 android:taskAffinity="com.android.settings"
                 android:clearTaskOnLaunch="true"
                 android:launchMode="singleTop">
@@ -352,14 +354,15 @@
             </intent-filter>
         </activity>
 
-        <activity android:name="ManageApplications"
+        <activity android:name=".applications.ManageApplications"
                   android:label="@string/manageapplications_settings_title"
                   android:clearTaskOnLaunch="true"
-                  android:configChanges="orientation|keyboardHidden">
+                  android:theme="@android:style/Theme.NoTitleBar">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.intent.action.MANAGE_PACKAGE_STORAGE" />
                 <action android:name="android.settings.MANAGE_APPLICATIONS_SETTINGS" />
+                <action android:name="android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.MONKEY" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
@@ -367,17 +370,25 @@
             </intent-filter>
         </activity>
 
-        <activity android:name="InstalledAppDetails" android:label="@string/application_info_label">
+        <!-- Keep compatibility with old shortcuts. -->
+        <activity-alias android:name=".ManageApplications"
+            android:targetActivity=".applications.ManageApplications"
+            android:exported="true" />
+        
+        <activity android:name=".applications.InstalledAppDetails"
+                android:theme="@android:style/Theme.NoTitleBar"
+                android:label="@string/application_info_label">
             <intent-filter>
-                <action android:name="android.intent.action.VIEW" />
+                <action android:name="android.settings.APPLICATION_DETAILS_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
-                <category android:name="android.intent.category.VOICE_LAUNCH" />
+                <data android:scheme="package" />
             </intent-filter>
         </activity>
 
-        <activity android:name="RunningServices"
-                  android:label="@string/runningservices_settings_title"
-                  android:clearTaskOnLaunch="true">
+        <!-- Provide direct entry into manage apps showing running services. -->
+        <activity-alias android:name=".RunningServices"
+                android:label="@string/runningservices_settings_title"
+            android:targetActivity=".applications.ManageApplications">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -385,6 +396,24 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
+        </activity-alias>
+        
+        <!-- Provide direct entry into manage apps showing running services. -->
+        <activity-alias android:name=".applications.StorageUse"
+                android:label="@string/storageuse_settings_title"
+            android:targetActivity=".applications.ManageApplications">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.MONKEY" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
+                <category android:name="com.android.settings.SHORTCUT" />
+            </intent-filter>
+        </activity-alias>
+        
+        <activity android:name=".applications.RunningServiceDetails"
+                android:theme="@android:style/Theme.NoTitleBar"
+                android:label="@string/runningservicedetails_settings_title">
         </activity>
 
         <activity android:name="SecuritySettings"
@@ -689,13 +718,6 @@
             </intent-filter>
         </activity>
 
-        <activity android:name=".battery_history.BatteryHistory" android:label="@string/battery_history_label">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
-            </intent-filter>
-        </activity>
-
         <activity android:name="Display" android:label="@string/display_label"
                 android:configChanges="fontScale">
             <intent-filter>
@@ -765,6 +787,7 @@
         </activity>
 
         <activity android:name=".fuelgauge.PowerUsageSummary"
+                android:theme="@android:style/Theme.NoTitleBar"
                 android:label="@string/power_usage_summary_title"
                 android:clearTaskOnLaunch="true"
                 >
@@ -777,6 +800,7 @@
         </activity>
 
         <activity android:name=".fuelgauge.PowerUsageDetail"
+                android:theme="@android:style/Theme.NoTitleBar"
                 android:label="@string/details_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -784,13 +808,23 @@
             </intent-filter>
         </activity>
 
-        <receiver android:name=".widget.SettingsAppWidgetProvider" android:label="@string/gadget_title">
+        <activity android:name=".fuelgauge.BatteryHistoryDetail"
+                android:theme="@android:style/Theme.NoTitleBar">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <receiver android:name=".widget.SettingsAppWidgetProvider"
+                android:label="@string/gadget_title" android:exported="false">
             <intent-filter>
                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                 <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
                 <action android:name="android.net.conn.BACKGROUND_DATA_SETTING_CHANGED" />
                 <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
-                <action android:name="android.intent.action.CLOSE_SYSTEM_DIALOGS" /> <!-- pick up misc changes -->
+                <action android:name="android.location.PROVIDERS_CHANGED" />
+                <action android:name="com.android.sync.SYNC_CONN_STATUS_CHANGED" />
             </intent-filter>
             <meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget_info" />
         </receiver>
diff --git a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off.png b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off.png
index be96dd9..d8fa90b 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on.png b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on.png
index 0b7ccc6..459ff18 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_gps_off.png b/res/drawable-hdpi/ic_appwidget_settings_gps_off.png
index ec6bcde..bb037bc 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_gps_off.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_gps_off.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_gps_on.png b/res/drawable-hdpi/ic_appwidget_settings_gps_on.png
index e52caa4..75ae817 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_gps_on.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_gps_on.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_sync_off.png b/res/drawable-hdpi/ic_appwidget_settings_sync_off.png
index a0a46a5..636f0cc 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_sync_off.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_sync_off.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_sync_on.png b/res/drawable-hdpi/ic_appwidget_settings_sync_on.png
index 1342751..8ecf159 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_sync_on.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_sync_on.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_wifi_off.png b/res/drawable-hdpi/ic_appwidget_settings_wifi_off.png
index cafb195..f0c9afd 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_wifi_off.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_wifi_off.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_wifi_on.png b/res/drawable-hdpi/ic_appwidget_settings_wifi_on.png
index c6ac993..66fae12 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_wifi_on.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_wifi_on.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_3d_globe.png b/res/drawable-hdpi/ic_menu_3d_globe.png
index 0858fec..1b55f09 100644
--- a/res/drawable-hdpi/ic_menu_3d_globe.png
+++ b/res/drawable-hdpi/ic_menu_3d_globe.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_add.png b/res/drawable-hdpi/ic_menu_add.png
index 65cc01e..4b73250 100644
--- a/res/drawable-hdpi/ic_menu_add.png
+++ b/res/drawable-hdpi/ic_menu_add.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_filter_settings.png b/res/drawable-hdpi/ic_menu_filter_settings.png
index a6777e9..fde4749 100644
--- a/res/drawable-hdpi/ic_menu_filter_settings.png
+++ b/res/drawable-hdpi/ic_menu_filter_settings.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_scan_network.png b/res/drawable-hdpi/ic_menu_scan_network.png
index 196ece0..a260e86 100644
--- a/res/drawable-hdpi/ic_menu_scan_network.png
+++ b/res/drawable-hdpi/ic_menu_scan_network.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_search.png b/res/drawable-hdpi/ic_settings_search.png
deleted file mode 100755
index ec07f37..0000000
--- a/res/drawable-hdpi/ic_settings_search.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_sync.png b/res/drawable-hdpi/ic_settings_sync.png
index d8544d9..d18b0c9 100755
--- a/res/drawable-hdpi/ic_settings_sync.png
+++ b/res/drawable-hdpi/ic_settings_sync.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_wireless.png b/res/drawable-hdpi/ic_settings_wireless.png
index b96ad00..472e546 100755
--- a/res/drawable-hdpi/ic_settings_wireless.png
+++ b/res/drawable-hdpi/ic_settings_wireless.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_lock_signal_1.png b/res/drawable-hdpi/ic_wifi_lock_signal_1.png
index 688df55..34bbbab 100644
--- a/res/drawable-hdpi/ic_wifi_lock_signal_1.png
+++ b/res/drawable-hdpi/ic_wifi_lock_signal_1.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_lock_signal_2.png b/res/drawable-hdpi/ic_wifi_lock_signal_2.png
index a88675b..2ad54ca 100644
--- a/res/drawable-hdpi/ic_wifi_lock_signal_2.png
+++ b/res/drawable-hdpi/ic_wifi_lock_signal_2.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_lock_signal_3.png b/res/drawable-hdpi/ic_wifi_lock_signal_3.png
index 1b8e15a..d4e36d2 100644
--- a/res/drawable-hdpi/ic_wifi_lock_signal_3.png
+++ b/res/drawable-hdpi/ic_wifi_lock_signal_3.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_lock_signal_4.png b/res/drawable-hdpi/ic_wifi_lock_signal_4.png
index 9ad6432..224eead 100644
--- a/res/drawable-hdpi/ic_wifi_lock_signal_4.png
+++ b/res/drawable-hdpi/ic_wifi_lock_signal_4.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_signal_1.png b/res/drawable-hdpi/ic_wifi_signal_1.png
index b27f69b..bb6a2eb 100644
--- a/res/drawable-hdpi/ic_wifi_signal_1.png
+++ b/res/drawable-hdpi/ic_wifi_signal_1.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_signal_2.png b/res/drawable-hdpi/ic_wifi_signal_2.png
index 5ea37f2..0a91615 100644
--- a/res/drawable-hdpi/ic_wifi_signal_2.png
+++ b/res/drawable-hdpi/ic_wifi_signal_2.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_signal_3.png b/res/drawable-hdpi/ic_wifi_signal_3.png
index f8c0221..b6f05e6 100644
--- a/res/drawable-hdpi/ic_wifi_signal_3.png
+++ b/res/drawable-hdpi/ic_wifi_signal_3.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_signal_4.png b/res/drawable-hdpi/ic_wifi_signal_4.png
index b62bf35..11e8a73 100644
--- a/res/drawable-hdpi/ic_wifi_signal_4.png
+++ b/res/drawable-hdpi/ic_wifi_signal_4.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_3d_globe.png b/res/drawable-mdpi/ic_menu_3d_globe.png
index 638e7fd..6755d5e 100644
--- a/res/drawable-mdpi/ic_menu_3d_globe.png
+++ b/res/drawable-mdpi/ic_menu_3d_globe.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_add.png b/res/drawable-mdpi/ic_menu_add.png
old mode 100755
new mode 100644
index 6752bfd..04f01ac
--- a/res/drawable-mdpi/ic_menu_add.png
+++ b/res/drawable-mdpi/ic_menu_add.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_filter_settings.png b/res/drawable-mdpi/ic_menu_filter_settings.png
old mode 100755
new mode 100644
index 7be883a..bc1e51a
--- a/res/drawable-mdpi/ic_menu_filter_settings.png
+++ b/res/drawable-mdpi/ic_menu_filter_settings.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_scan_network.png b/res/drawable-mdpi/ic_menu_scan_network.png
index eed82a2..3fa3f45 100644
--- a/res/drawable-mdpi/ic_menu_scan_network.png
+++ b/res/drawable-mdpi/ic_menu_scan_network.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_settings_search.png b/res/drawable-mdpi/ic_settings_search.png
deleted file mode 100755
index 8e13de3..0000000
--- a/res/drawable-mdpi/ic_settings_search.png
+++ /dev/null
Binary files differ
diff --git a/res/layout/battery_history.xml b/res/layout/battery_history.xml
deleted file mode 100644
index b46d97b..0000000
--- a/res/layout/battery_history.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/topLayout"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <TextView
-        android:id="@+id/title"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content" />
-
-    <LinearLayout
-        android:id="@+id/graphLayout"
-        android:orientation="vertical"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" >
-
-        <Spinner
-            android:id="@+id/typeSpinner"
-            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="match_parent"
-            android:layout_height="wrap_content"
-            android:entries="@array/battery_history_which_spinner" />
-
-        <ScrollView
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content" >
-
-        <LinearLayout
-            android:orientation="vertical"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content" >
-            
-        <TextView
-            android:id="@+id/messageText"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:gravity="center_horizontal"
-            android:textSize="17dp"
-            android:visibility="gone" />
-
-        <com.android.settings.battery_history.GraphableButton
-            android:id="@+id/button0"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_marginLeft="4dp"
-            android:layout_marginRight="4dp"
-            android:layout_marginBottom="4dp"
-            android:layout_weight="1" />
-    
-        <com.android.settings.battery_history.GraphableButton
-            android:id="@+id/button1"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_marginLeft="4dp"
-            android:layout_marginRight="4dp"
-            android:layout_marginBottom="4dp"
-            android:layout_weight="1" />
-    
-        <com.android.settings.battery_history.GraphableButton
-            android:id="@+id/button2"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_marginLeft="4dp"
-            android:layout_marginRight="4dp"
-            android:layout_marginBottom="4dp"
-            android:layout_weight="1" />
-    
-        <com.android.settings.battery_history.GraphableButton
-            android:id="@+id/button3"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_marginLeft="4dp"
-            android:layout_marginRight="4dp"
-            android:layout_marginBottom="4dp"
-            android:layout_weight="1" />
-    
-        <com.android.settings.battery_history.GraphableButton
-            android:id="@+id/button4"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_marginLeft="4dp"
-            android:layout_marginRight="4dp"
-            android:layout_marginBottom="4dp"
-            android:layout_weight="1" />
-    
-        <com.android.settings.battery_history.GraphableButton
-            android:id="@+id/button5"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_marginLeft="4dp"
-            android:layout_marginRight="4dp"
-            android:layout_marginBottom="4dp"
-            android:layout_weight="1" />
-    
-        <com.android.settings.battery_history.GraphableButton
-            android:id="@+id/button6"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_marginLeft="4dp"
-            android:layout_marginRight="4dp"
-            android:layout_marginBottom="4dp"
-            android:layout_weight="1" />
-    
-        <com.android.settings.battery_history.GraphableButton
-            android:id="@+id/button7"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_marginLeft="4dp"
-            android:layout_marginRight="4dp"
-            android:layout_marginBottom="4dp"
-            android:layout_weight="1" />
-
-        </LinearLayout>
-        </ScrollView>
-
-    </LinearLayout>
-
-    <LinearLayout
-        android:id="@+id/textLayout"
-        android:visibility="gone"
-        android:orientation="vertical"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" >
-
-        <ScrollView
-            android:layout_width="match_parent"
-            android:layout_height="match_parent" >
-            <TextView
-                android:id="@+id/detailsText"
-                android:layout_width="match_parent"
-                android:textSize="17dp"
-                android:layout_height="1000dp"/>
-        </ScrollView>
-
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/res/layout/compute_sizes.xml b/res/layout/compute_sizes.xml
deleted file mode 100755
index 4ba5b3e..0000000
--- a/res/layout/compute_sizes.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<ListView 
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@android:id/list"
-    android:drawSelectorOnTop="false"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent" />
diff --git a/res/layout/device_admin_add.xml b/res/layout/device_admin_add.xml
index f560331..f3ba59e 100644
--- a/res/layout/device_admin_add.xml
+++ b/res/layout/device_admin_add.xml
@@ -20,30 +20,32 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     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:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:gravity="center"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textColor="?android:attr/textColorPrimary"
+            android:shadowColor="?android:attr/colorBackground"
+            android:shadowRadius="2" />
+    </LinearLayout>
+
     <ScrollView
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:orientation="vertical">
+        android:layout_height="0dip"
+        android:layout_weight="1.0"
+        android:gravity="top">
         <LinearLayout
             android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_weight="1"
+            android:layout_height="wrap_content"
             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:id="@+id/title"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    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"
@@ -66,28 +68,49 @@
                     android:singleLine="true"
                     android:ellipsize="marquee" />
             </LinearLayout>
-            <TextView android:id="@+id/admin_warning"
+
+            <LinearLayout
                 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/admin_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" />
+                android:orientation="vertical">
+                <TextView android:id="@+id/admin_description"
+                    android:layout_width="fill_parent"
+                    android:layout_height="0dip"
+                    android:layout_weight="0"
+                    android:padding="0dip" />
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:gravity="center_vertical">
+                    <ImageView android:id="@+id/add_msg_expander"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:gravity="center_vertical" />
+                    <TextView android:id="@+id/add_msg"
+                        android:layout_width="fill_parent"
+                        android:layout_height="wrap_content"
+                        android:gravity="center_vertical"
+                        android:padding="10dip" />
+                </LinearLayout>
+
+                <TextView android:id="@+id/admin_warning"
+                    android:layout_width="fill_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:padding="10dip" />
+                <LinearLayout android:id="@+id/admin_policies"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:paddingLeft="16dip"
+                    android:paddingRight="12dip" />
+            </LinearLayout>
+
         </LinearLayout>
     </ScrollView>
+
     <LinearLayout style="@android:style/ButtonBar"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -114,4 +137,5 @@
            android:layout_height="0dip"
            android:layout_weight="1" />
     </LinearLayout>
+
 </LinearLayout>
diff --git a/res/layout/installed_app_details.xml b/res/layout/installed_app_details.xml
index 3243672..fff1975 100644
--- a/res/layout/installed_app_details.xml
+++ b/res/layout/installed_app_details.xml
@@ -25,7 +25,6 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:paddingRight="6dip"
-        android:paddingTop="5dip"
         android:paddingBottom="5dip"
         android:orientation="vertical">
 
diff --git a/res/layout/manage_applications.xml b/res/layout/manage_applications.xml
new file mode 100755
index 0000000..95d4847
--- /dev/null
+++ b/res/layout/manage_applications.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" >
+
+    <LinearLayout android:id="@+id/list_container"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:visibility="gone">
+        <FrameLayout android:layout_width="match_parent"
+                android:layout_height="0px"
+                android:layout_weight="1">
+            <ListView android:id="@android:id/list"
+                android:drawSelectorOnTop="false"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+            <TextView android:id="@android:id/empty"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:gravity="center"
+                    android:text="@string/no_applications"
+                    android:textAppearance="?android:attr/textAppearanceLarge" />
+        </FrameLayout>
+        <view class="com.android.settings.applications.LinearColorBar"
+                android:id="@+id/storage_color_bar"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="-5dp"
+                android:orientation="horizontal"
+                android:clipChildren="false"
+                android:clipToPadding="false"
+                android:paddingTop="30dp"
+                android:paddingLeft="4dp"
+                android:paddingRight="4dp"
+                android:paddingBottom="1dp">
+            <TextView android:id="@+id/usedStorageText"
+                android:layout_width="0px"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:textAppearance="?android:attr/textAppearanceSmallInverse"
+                android:textColor="#000"
+                android:singleLine="true" />
+            <TextView android:id="@+id/storageChartLabel"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="0"
+                android:layout_marginTop="-20dp"
+                android:textAppearance="?android:attr/textAppearanceSmallInverse"
+                android:textColor="#ccc"
+                android:shadowColor="#000"
+                android:shadowRadius="5"
+                android:textStyle="bold"
+                android:singleLine="true"
+                android:text="@string/internal_storage" />
+            <TextView android:id="@+id/freeStorageText"
+                android:layout_gravity="center_vertical|right"
+                android:layout_width="0px"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:gravity="right"
+                android:textAppearance="?android:attr/textAppearanceSmallInverse"
+                android:textColor="#000"
+                android:singleLine="true" />
+        </view>
+    </LinearLayout>
+
+    <view class="com.android.settings.applications.RunningProcessesView"
+            android:id="@+id/running_processes"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone" />
+
+    <LinearLayout android:id="@+id/loading_container"
+            android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone"
+            android:gravity="center">
+
+        <ProgressBar style="?android:attr/progressBarStyleLarge"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content" />
+        <TextView android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceSmall"
+                android:text="@string/settings_safetylegal_activity_loading"
+                android:paddingTop="4dip"
+                android:singleLine="true" />
+
+    </LinearLayout>
+
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/manage_applications_item.xml b/res/layout/manage_applications_item.xml
index cdf4c9d..78d9a02 100755
--- a/res/layout/manage_applications_item.xml
+++ b/res/layout/manage_applications_item.xml
@@ -31,14 +31,14 @@
     <ImageView android:id="@+id/app_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"/>
 
     <LinearLayout
         android:orientation="vertical"
-        android:layout_width="match_parent"
+        android:layout_width="0px"
+        android:layout_weight="1"
         android:layout_height="wrap_content" >
         <TextView android:id="@+id/app_name"
             android:layout_width="wrap_content"
@@ -48,12 +48,36 @@
             android:singleLine="true"
             android:ellipsize="marquee"
             android:layout_marginBottom="2dip" />
-        <TextView android:id="@+id/app_size"
-            android:layout_marginTop="-4dip"
-            android:layout_gravity="center_vertical"
-            android:layout_width="wrap_content"
+        <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceSmall" />
+            android:baselineAlignedChildIndex="0" >
+            <TextView android:id="@+id/app_size"
+                android:layout_marginTop="-4dip"
+                android:layout_gravity="center_vertical|left"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:textAppearance="?android:attr/textAppearanceSmall" />
+            <TextView android:id="@+id/app_disabled"
+                android:layout_marginTop="-4dip"
+                android:layout_gravity="center_vertical|right"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="0"
+                android:visibility="gone"
+                android:textAppearance="?android:attr/textAppearanceSmall"
+                android:text="@string/disabled" />
+        </LinearLayout>
     </LinearLayout>
+    
+    <CheckBox android:id="@+id/app_on_sdcard"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="5dip"
+        android:layout_gravity="center_vertical"
+        android:visibility="gone"
+        android:clickable="false"
+        android:focusable="false" />
 </LinearLayout>
-
diff --git a/res/layout/master_clear_primary.xml b/res/layout/master_clear_primary.xml
index 2c4156b..dd25900 100644
--- a/res/layout/master_clear_primary.xml
+++ b/res/layout/master_clear_primary.xml
@@ -25,11 +25,46 @@
             android:layout_width="fill_parent"
             android:layout_height="0dip"
             android:layout_weight="1">
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textSize="18sp"
-            android:text="@string/master_clear_desc" />
+        <LinearLayout android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="18sp"
+                android:text="@string/master_clear_desc" />
+            <LinearLayout android:id="@+id/erase_external_container"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:focusable="true"
+                    android:clickable="true">
+                <CheckBox android:id="@+id/erase_external"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="top"
+                        android:paddingRight="8dp"
+                        android:focusable="false"
+                        android:clickable="false"
+                        android:duplicateParentState="true" />
+                <LinearLayout android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="vertical">
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:paddingTop="12dp"
+                        android:textSize="18sp"
+                        android:text="@string/erase_external_storage" />
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:paddingTop="4sp"
+                        android:textSize="14sp"
+                        android:text="@string/erase_external_storage_description" />
+                </LinearLayout>
+            </LinearLayout>
+        </LinearLayout>
     </ScrollView>
     <Button
             android:id="@+id/initiate_master_clear"
diff --git a/res/layout/preference_batteryhistory.xml b/res/layout/preference_batteryhistory.xml
new file mode 100644
index 0000000..53dce74
--- /dev/null
+++ b/res/layout/preference_batteryhistory.xml
@@ -0,0 +1,30 @@
+<?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.
+-->
+
+<com.android.settings.fuelgauge.BatteryHistoryChart
+        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:gravity="center_vertical"
+    android:id="@+android:id/battery_history_chart"
+    android:paddingRight="?android:attr/scrollbarSize"
+    android:textAppearance="?android:attr/textAppearanceMedium"
+    android:shadowRadius="4"
+    android:shadowColor="?android:attr/colorBackground"
+    android:shadowDx="2"
+    android:shadowDy="2">
+</com.android.settings.fuelgauge.BatteryHistoryChart>
diff --git a/res/layout/running_services_item.xml b/res/layout/running_processes_item.xml
similarity index 70%
rename from res/layout/running_services_item.xml
rename to res/layout/running_processes_item.xml
index f8a0c97..dacee9e 100644
--- a/res/layout/running_services_item.xml
+++ b/res/layout/running_processes_item.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 /*
-** Copyright 2008, The Android Open Source Project
+** 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.
@@ -24,11 +24,6 @@
     android:orientation="vertical"
     android:gravity="fill" >
 
-    <ImageView android:id="@+id/separator"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:src="?android:attr/listDivider"/>
-    
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -41,7 +36,6 @@
         <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"/>
@@ -55,15 +49,16 @@
                 android:baselineAlignedChildIndex="0"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content">
-	            <TextView android:id="@+id/name"
-	                android:layout_width="wrap_content"
-	                android:layout_height="wrap_content"
+                <TextView android:id="@+id/name"
+                    android:layout_width="0px"
+                    android:layout_height="wrap_content"
                     android:layout_weight="1"
-	                android:textAppearance="?android:attr/textAppearanceMedium"
-	                android:textStyle="bold"
-	                android:singleLine="true"
-	                android:ellipsize="marquee"
-	                android:layout_marginBottom="2dip" />
+                    android:paddingRight="4dip"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textStyle="bold"
+                    android:singleLine="true"
+                    android:ellipsize="marquee"
+                    android:layout_marginBottom="2dip" />
                 <TextView android:id="@+id/size"
                     android:layout_gravity="center_vertical|right"
                     android:layout_width="wrap_content"
@@ -72,15 +67,28 @@
                     android:singleLine="true"
                     android:textAppearance="?android:attr/textAppearanceSmall" />
             </LinearLayout>
+            <LinearLayout
+                android:orientation="horizontal"
+                android:baselineAlignedChildIndex="0"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
                 <TextView android:id="@+id/description"
-                    android:layout_marginTop="-4dip"
                     android:layout_gravity="center_vertical|left"
-                    android:layout_width="wrap_content"
+                    android:layout_width="0px"
                     android:layout_height="wrap_content"
+                    android:layout_weight="1"
                     android:paddingRight="4dip"
                     android:singleLine="true"
                     android:ellipsize="marquee"
                     android:textAppearance="?android:attr/textAppearanceSmall" />
+                <TextView android:id="@+id/uptime"
+                    android:layout_gravity="center_vertical|right"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="0"
+                    android:singleLine="true"
+                    android:textAppearance="?android:attr/textAppearanceSmall" />
+            </LinearLayout>
         </LinearLayout>
     </LinearLayout>
 </LinearLayout>
diff --git a/res/layout/running_processes_view.xml b/res/layout/running_processes_view.xml
new file mode 100644
index 0000000..3558e92
--- /dev/null
+++ b/res/layout/running_processes_view.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+ * Copyright (C) 2010 Google Inc.
+ *
+ * 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="match_parent"
+        android:orientation="vertical">
+    <FrameLayout
+            android:layout_width="match_parent"
+            android:layout_height="0px"
+            android:layout_weight="1">
+        <ListView android:id="@android:id/list"
+                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="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center"
+                android:text="@string/no_running_services"
+                android:textAppearance="?android:attr/textAppearanceLarge" />
+    </FrameLayout>
+    <view class="com.android.settings.applications.LinearColorBar"
+            android:id="@+id/color_bar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="-5dp"
+            android:orientation="horizontal"
+            android:clipChildren="false"
+            android:clipToPadding="false"
+            android:paddingTop="30dp"
+            android:paddingLeft="4dp"
+            android:paddingRight="4dp"
+            android:paddingBottom="1dp">
+        <TextView android:id="@+id/foregroundText"
+            android:layout_width="0px"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:focusable="true"
+            android:gravity="left|bottom"
+            android:textAppearance="?android:attr/textAppearanceSmallInverse"
+            android:textColor="#000"
+            android:singleLine="true" />
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="0"
+            android:layout_marginTop="-20dp"
+            android:textAppearance="?android:attr/textAppearanceSmallInverse"
+            android:textColor="#ccc"
+            android:shadowColor="#000"
+            android:shadowRadius="5"
+            android:textStyle="bold"
+            android:singleLine="true"
+            android:text="@string/memory" />
+        <TextView android:id="@+id/backgroundText"
+            android:layout_gravity="center_vertical|right"
+            android:layout_width="0px"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:focusable="true"
+            android:gravity="right|bottom"
+            android:textAppearance="?android:attr/textAppearanceSmallInverse"
+            android:textColor="#000"
+            android:singleLine="true" />
+    </view>
+</LinearLayout>
diff --git a/res/layout/running_service_details.xml b/res/layout/running_service_details.xml
new file mode 100644
index 0000000..98c144c
--- /dev/null
+++ b/res/layout/running_service_details.xml
@@ -0,0 +1,36 @@
+<?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.
+*/
+-->
+<ScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <LinearLayout
+        android:id="@+id/all_details"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+        <!-- Summary information as per previous screen -->
+        <include
+            layout="@layout/running_processes_item"
+            android:id="@+id/snippet"/>
+
+    </LinearLayout>
+</ScrollView>
+
diff --git a/res/layout/running_service_details_process.xml b/res/layout/running_service_details_process.xml
new file mode 100644
index 0000000..d12b486
--- /dev/null
+++ b/res/layout/running_service_details_process.xml
@@ -0,0 +1,37 @@
+<?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="match_parent"
+    android:orientation="vertical">
+    
+    <!-- Icon and label of the service. -->
+    <include
+        layout="@layout/running_processes_item"
+        android:id="@+id/service"/>
+
+    <TextView android:id="@+id/comp_description"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingTop="8dp"
+        android:paddingBottom="8dp"
+        android:paddingLeft="14dip"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+
+</LinearLayout>
diff --git a/res/layout/running_service_details_service.xml b/res/layout/running_service_details_service.xml
new file mode 100644
index 0000000..b9f9bbe
--- /dev/null
+++ b/res/layout/running_service_details_service.xml
@@ -0,0 +1,48 @@
+<?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="match_parent"
+    android:orientation="vertical">
+
+    <!--    
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:src="?android:attr/listDivider"/>
+    -->
+        
+    <!-- Icon and label of the service. -->
+    <include
+        layout="@layout/running_processes_item"
+        android:id="@+id/service"/>
+
+    <TextView android:id="@+id/comp_description"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingTop="8dp"
+        android:paddingBottom="8dp"
+        android:paddingLeft="14dip"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+
+    <include
+        layout="@layout/two_buttons_panel"
+        android:id="@+id/control_buttons_panel"/>
+
+</LinearLayout>
diff --git a/res/layout/running_services.xml b/res/layout/running_services.xml
deleted file mode 100644
index 5c0da6f..0000000
--- a/res/layout/running_services.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 
- * Copyright (C) 2008 Google Inc.
- *
- * 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="match_parent"
-	    android:orientation="vertical">
-    <FrameLayout
-		    android:layout_width="match_parent"
-		    android:layout_height="0px"
-		    android:layout_weight="1">
-	    <ListView android:id="@android:id/list"
-	            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="match_parent"
-	            android:layout_height="match_parent"
-	            android:gravity="center"
-	            android:text="@string/no_running_services"
-	            android:textAppearance="?android:attr/textAppearanceLarge" />
-    </FrameLayout>
-    <view class="com.android.settings.RunningServices$LinearColorBar"
-            android:id="@+id/color_bar"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            android:padding="4dp">
-        <TextView android:id="@+id/foregroundText"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:textAppearance="?android:attr/textAppearanceSmallInverse"
-            android:color="?android:attr/textColorPrimaryInverse"
-            android:singleLine="true" />
-        <TextView android:id="@+id/backgroundText"
-            android:layout_gravity="center_vertical|right"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_weight="0"
-            android:textAppearance="?android:attr/textAppearanceSmallInverse"
-            android:color="?android:attr/textColorPrimaryInverse"
-            android:singleLine="true" />
-    </view>
-</LinearLayout>
diff --git a/res/layout/separator_label.xml b/res/layout/separator_label.xml
new file mode 100644
index 0000000..b0e69fa
--- /dev/null
+++ b/res/layout/separator_label.xml
@@ -0,0 +1,21 @@
+<?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.
+*/
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    style="?android:attr/listSeparatorTextViewStyle" />
diff --git a/res/layout/wifi_ap_dialog.xml b/res/layout/wifi_ap_dialog.xml
index 6d9691b..b4c67a2 100644
--- a/res/layout/wifi_ap_dialog.xml
+++ b/res/layout/wifi_ap_dialog.xml
@@ -82,6 +82,7 @@
                     android:password="true" />
 
             <TextView android:id="@+id/hint"
+                    style="?android:attr/textAppearanceSmallInverse"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:textSize="12sp"
diff --git a/res/values-cs/arrays.xml b/res/values-cs/arrays.xml
index e91ac4b..00e605e 100644
--- a/res/values-cs/arrays.xml
+++ b/res/values-cs/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Nikdy, je-li zapnuto napájení"</item>
     <item msgid="1986753720941888596">"Nikdy"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"Využití CPU"</item>
-    <item msgid="6401018715947316517">"Využití sítě"</item>
-    <item msgid="188092590354892392">"Využití GPS"</item>
-    <item msgid="8414109131222049141">"Využití senzoru"</item>
-    <item msgid="1327904325081257093">"Použití při částečném probuzení"</item>
-    <item msgid="4832254146664706277">"Další využití"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Od posledního odpojení"</item>
-    <item msgid="166936313535197598">"Celkem od spuštění"</item>
-    <item msgid="4793941382744963893">"Celkem za celou dobu"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Doba použití"</item>
     <item msgid="1908750532762193304">"Počet spuštění"</item>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 398d49e..ff8b44b 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Odpojit kartu SD"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Formátovat kartu SD"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Odpojit úložiště USB"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Odpojit kartu SD"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Smazat úložiště USB"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Smazat kartu SD"</string>
     <string name="small_font" msgid="2295331917424072635">"Malá"</string>
     <string name="medium_font" msgid="2068475425515133701">"Střední"</string>
     <string name="large_font" msgid="599055175160971446">"Velká"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"Karta SD"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Úložiště USB"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Karta SD"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Stav baterie:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Napájecí konektor:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Měřítko baterie:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Změna se projeví při příštím připojení kabelu USB."</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Povolit velkokapacitní paměťové zařízení USB"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Celková paměť (bajty):"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Žádná karta SD"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"Úložiště USB není připojeno"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Žádná karta SD"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Dostupná paměť (bajty):"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"Karta SD je využívána jako velkokapacitní paměťové zařízení."</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"Nyní můžete kartu SD bezpečně odebrat."</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"Karta SD byla odstraněna za provozu."</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"Úložiště USB využíváno jako velkokapacitní paměťové zařízení"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"Karta SD je využívána jako velkokapacitní paměťové zařízení."</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"Úložiště USB lze nyní odebrat"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"Nyní můžete kartu SD bezpečně odebrat."</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"Úlož. USB odebráno za provozu."</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"Karta SD byla odstraněna za provozu."</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Obsazená paměť (bajty):"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Vyhledávání mediálních souborů na kartě SD..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"Karta SD byla připojena pouze pro čtení."</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Hledání médií v úložišti USB…"</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Vyhledávání mediálních souborů na kartě SD..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"Úlož. připojeno jen pro čtení"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"Karta SD byla připojena pouze pro čtení."</string>
     <string name="next_label" msgid="4693520878012668114">"Další"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Národní prostředí"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Zvolte jazyk"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Zvolit činnost"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Info o zařízení"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Info o baterii"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Historie baterie"</string>
     <string name="display_label" msgid="7403874003169865762">"Zobrazení"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Info o telefonu"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"Karta SD"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"Úložiště USB"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"Karta SD"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Nastavení proxy serveru"</string>
     <string name="cancel" msgid="6859253417269739139">"Zrušit"</string>
     <string name="settings_label" msgid="1626402585530130914">"Nastavení"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Nastavení"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Nastavení"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Režim V letadle"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Vypne všechna bezdrátová připojení"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Jako telefon pro hlasitý poslech"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Pro hudbu a média"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Zapamatovat nastavení"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Použít technologii NFC ke čtení a výměně štítků"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"WiFi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Zapnout WiFi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Nastavení WiFi"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Určit, kdy přepnout ze sítě Wi-Fi na mobilní datový přenos"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Při nastavení zásad pro režim spánku došlo k problému."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"Adresa MAC"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"Adresa IP"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"Nastavení adresy IP"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Uložit"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Zrušit"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Stav"</string>
     <string name="device_status" msgid="607405385799807324">"Stav"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Telefonní číslo, signál, atd."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"Karta SD a paměť telefonu"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Nastavení karty SD a paměti telefonu"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Umožňuje odpojit kartu SD a zobrazit dostupnou paměť"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Úložiště"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Nastavení úložiště"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Odpojit úložiště USB a zobrazit dostupné úložiště"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Umožňuje odpojit kartu SD a zobrazit dostupnou paměť"</string>
     <string name="status_number" msgid="5123197324870153205">"Moje telefonní číslo"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"Verze PRL"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Nedostupný údaj"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Doba provozu"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Doba provozu"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Interní paměť telefonu"</string>
-    <string name="sd_memory" msgid="151871913888051515">"Karta SD"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Interní úložiště"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"Úložiště USB"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"Karta SD"</string>
     <string name="memory_available" msgid="418542433817289474">"Dostupná paměť"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Vložte kartu SD, kterou chcete připojit."</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Připojit kartu SD"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Připojit kartu SD"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"Odpojit kartu SD"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Odpojit interní úložiště USB"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"K bezpečnému odebrání karty SD je potřeba kartu nejprve odpojit"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Vložte úložiště USB"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Vložte kartu SD, kterou chcete připojit."</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Připojit sdílené úložiště"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Připojit kartu SD"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Připojit interní úložiště USB"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Připojit kartu SD"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Smazat úložiště USB"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Smazat kartu SD"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Smaže všechna data v interním úložišti USB telefonu, například hudbu a fotografie"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Smaže všechna data na kartě SD telefonu, například hudbu a fotografie"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Nedostupný údaj"</string>
     <string name="read_only" msgid="6702420168629076340">" (Pouze pro čtení)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Odpojit kartu SD"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Pokud odpojíte kartu SD, dojde k zastavení některých používaných aplikací. Tyto aplikace pravděpodobně nebudou k dispozici až do opětovného připojení karty SD."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Odpojení karty SD se nezdařilo"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"Kartu SD nelze odpojit. Zkuste to znovu později."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"Karta SD bude odpojena. Stav bude zobrazen v oznamovací oblasti."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Odpojit úložiště USB"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Odpojit kartu SD"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Pokud úložiště USB odpojíte, některé používané aplikace přestanou fungovat. Tyto aplikace pravděpodobně nebudou k dispozici, dokud úložiště USB znovu nepřipojíte."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Pokud odpojíte kartu SD, dojde k zastavení některých používaných aplikací. Tyto aplikace pravděpodobně nebudou k dispozici až do opětovného připojení karty SD."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Odpojení úložiště USB se nezdařilo"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Odpojení karty SD se nezdařilo"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"Úložiště USB nelze odpojit. Zkuste to znovu později."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"Kartu SD nelze odpojit. Zkuste to znovu později."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"Úložiště USB bude odpojeno."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"Karta SD bude odpojena."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Odpojování"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Probíhá odpojování"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Stav baterie"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Obnovení výchozích nastavení názvu AP bylo dokončeno."</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Obnovení továrních dat"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Vymaže všechna data v telefonu"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Tento krok vymaže všechna data z vašeho telefonu včetně:"\n<li>"vašeho účtu Google,"</li>\n<li>"dat a nastavení systému a aplikací,"</li>\n<li>"stažených aplikací."</li>\n"Vymazány nebudou:"\n<li>"aktuální software systému a s ním dodané aplikace"</li>\n<li>"soubory na kartě SD, například hudba a fotky."</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Tato akce smaže všechna data z "<b>"interního úložiště"</b>" telefonu, včetně:"\n\n<li>"účtu Google,"</li>\n<li>"dat a nastavení systému a aplikací,"</li>\n<li>"stažených aplikací."</li>\n\n"Chcete-li smazat všechna data v tomto telefonu, je potřeba smazat"<b>"úložiště USB"</b>"."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Tato akce smaže všechna data z "<b>"interního úložiště"</b>" telefonu, včetně:"\n\n<li>"účtu Google,"</li>\n<li>"dat a nastavení aplikací a systému,"</li>\n<li>"stažených aplikací."</li>\n\n"Chcete-li smazat také hudbu, obrázky a další uživatelská data, je potřeba smazat"<b>"kartu SD"</b>\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Smazat úložiště USB"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Smazat kartu SD"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Smazat všechna data v interním úložišti USB telefonu, například hudbu a fotografie."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Smazat všechna data na kartě SD telefonu, například hudbu a fotografie."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Resetovat telefon"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Chcete smazat všechny osobní informace a stažené aplikace? Tuto akci nelze vrátit zpět."</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Odstranit vše"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Proveďte gesto odemknutí"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Chcete-li potvrdit reset telefonu, musíte provést gesto odemknutí."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Pokus o reset se nezdařil, protože služba System Clear není dostupná."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Formátovat kartu SD"</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Vymaže všechna data na kartě SD"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Tato akce smaže kartu SD v telefonu. VŠECHNA data na kartě budou ztracena."</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Formátovat kartu SD"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Formátování karty SD. Chcete smazat všechna svoje média? Akci nelze vrátit zpět."</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Smazat úložiště USB"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Smazat kartu SD"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Smaže data v úložišti USB"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Vymaže všechna data na kartě SD"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Tato akce smaže úložiště USB. Ztratíte "<b>"všechna"</b>" data v něm uložená."</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Tato akce vymaže kartu SD. "<b>"Všechna"</b>" data na kartě budou ztracena."</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Smazat úložiště USB"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Smazat kartu SD"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"Chcete úložiště USB smazat a odstranit tak všechny soubory, které jsou v něm uloženy? Tuto akci nelze vrátit zpět."</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"Chcete kartu SD smazat a odstranit tak všechny soubory, které jsou na ní uloženy? Tuto akci nelze vrátit zpět."</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Odstranit vše"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Proveďte gesto odemknutí"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Formátování karty SD je potřeba potvrdit nakreslením odemykacího obrazce."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Smazání úložiště USB je třeba potvrdit pomocí bezpečnostního gesta."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Smazání karty SD je třeba potvrdit pomocí bezpečnostního gesta."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Nastavení hovorů"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Nastavení hlasové schránky, přesměrování a čekání hovorů a ID volajícího"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Tethering"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Zobrazuje polohu v aplikacích (jako Mapy) pomocí bezdrátových sítí"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Poloha je zaměřena pomocí WiFi nebo mobilních sítí"</string>
     <string name="location_gps" msgid="6296125378829097831">"Použít satelity GPS"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Zaměření je s přesností na úrovni ulic (zrušením této volby lze šetřit baterii)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Zaměření je s přesností na úrovni ulic."</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Umožňuje zaměřit na úrovni ulic (vetší spotřeba baterie a nutný výhled na oblohu)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Použít systém A-GPS"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Vylepšit funkčnost GPS pomocí serveru (deaktivací této funkce snížíte využití sítě)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Aplikace"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Data"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Odinstalovat"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Vypnout"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Povolit"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Mazání dat"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Odinstalovat aktualizace"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Aplikace byla nastavena, aby se pro některé akce spouštěla jako výchozí."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Není výchozí pro žádné akce."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Vymazat výchozí nastavení"</string>
     <string name="unknown" msgid="1592123443519355854">"Neznámé"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Řadit"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Seřadit dle jména"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Řadit podle velikosti"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Zobrazit spuštěné služby"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Zobrazit mezipaměť"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Správa paměti"</string>
     <string name="filter" msgid="2018011724373033887">"Filtrovat"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Vyberte možnosti filtru"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Vše"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Stažené"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"Spuštěné"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"Na kartě SD"</string>
-    <string name="loading" msgid="3200408047793887917">"Načítání..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"Úložiště USB"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"Na kartě SD"</string>
+    <string name="disabled" msgid="9206776641295849915">"Deaktivováno"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Žádné aplikace."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Interní úložiště"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"Úložiště USB"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"Karta SD"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Přepočítávání velikosti..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Smazat"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Veškerá data (všechny soubory, nastavení, účty, databáze apod.) této aplikace budou trvale vymazána."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"verze <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Přesunout"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Přesunout do telefonu"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Přesunout na kartu SD"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Přesunout do úlož. USB"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Přesunout na kartu SD"</string>
     <string name="moving" msgid="6431016143218876491">"Přesouvání"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"V úložišti je nedostatek volného místa."</string>
     <string name="does_not_exist" msgid="837163572898468245">"Aplikace neexistuje."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"Zadané místo pro instalaci není platné."</string>
     <string name="system_package" msgid="1030561474413022831">"Aktualizace systému nelze nainstalovat na externí média."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Vynutit zastavení"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Tato aplikace bude okamžitě restartována. Opravdu chcete vynutit její zastavení?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Vynucené zastavení může způsobit nepředvídatelné chování aplikace. Jste si jisti?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Přesun aplikace"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Přesunutí aplikace se nezdařilo. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Preferované umístění pro instalaci"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Změna preferovaného umístění pro instalaci nových aplikací"</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Využití úložiště"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Zobrazit aplikacemi používané úložiště"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Spuštěné služby"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Umožňuje zobrazit a ovládat aktuálně spuštěné služby"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Probíhá restartování"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Žádné spuštěné služby"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Zastavit službu?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"Služba zůstane vypnutá, dokud nebude znovu spuštěna. To může mít nežádoucí vliv na aplikaci <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Zastavit"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Zrušit"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Spuštěno aplikací: dotykem zastavíte"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: spravovat dotykem"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"K dispozici: <xliff:g id="FREE">%2$s</xliff:g> + <xliff:g id="MEMORY">%3$s</xliff:g> v <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Ostatní: <xliff:g id="MEMORY">%2$s</xliff:g> v <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Proces: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Proces na pozadí v mezipaměti"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Nic není spuštěno."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Spuštěno aplikací."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> volno"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"Využito <xliff:g id="MEMORY">%1$s</xliff:g>"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"Počet procesů: <xliff:g id="NUMPROCESS">%1$d</xliff:g>; počet služeb: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"Počet procesů: <xliff:g id="NUMPROCESS">%1$d</xliff:g>; počet služeb: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"Počet procesů: <xliff:g id="NUMPROCESS">%1$d</xliff:g>; počet služeb: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"Počet procesů: <xliff:g id="NUMPROCESS">%1$d</xliff:g>; počet služeb: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Spuštěná aplikace"</string>
+    <string name="no_services" msgid="7133900764462288263">"Neaktivní"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Služby"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Procesy"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Zastavit"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Nastavení"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Tato služba byla spuštěna svou aplikací. Pokud ji zastavíte, může dojít k selhání aplikace."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Tuto aplikaci nelze bezpečně zastavit. Mohlo by dojít ke ztrátě části vaší aktuální práce."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Toto je starý proces aplikace zachovaný pro rychlejší spuštění v případě, že bude znovu potřeba. Zpravidla není důvod jej zastavovat."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: právě se používá. Ovládací prvky zobrazte dotykem na Nastavení."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Hlavní proces, který se používá."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Služba <xliff:g id="COMP_NAME">%1$s</xliff:g> se používá."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Poskytovatel <xliff:g id="COMP_NAME">%1$s</xliff:g> se používá."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Zastavit systémovou službu?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Opravdu tuto systémovou službu chcete zastavit? Může se stát, že telefon ztratí některé funkce. Ty nebudou fungovat, dokud telefon nevypnete a opět nezapnete."</string>
     <string name="language_settings" msgid="502219872342167227">"Jazyk a klávesnice"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Nastavení jazyka a klávesnice"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Nastavení jazyka a oblasti, způsobu zadávání textu a automatických oprav"</string>
-    <string name="language_category" msgid="3391756582724541530">"Nastavení národního prostředí"</string>
-    <string name="text_category" msgid="6342540511465136739">"Nastavení textu"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Nastavení jazyka"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Nastavení klávesnice"</string>
     <string name="phone_language" msgid="1165758957501090679">"Vyberte jazyk"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Automatické nahrazování"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Testování"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Info o telefonu"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Info o baterii"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Historie baterie"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Rychlé spuštění"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Umožňuje nastavit klávesové zkratky pro spouštění aplikací"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Přiřadit aplikaci"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Správa možností zadávání textu"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Nastavení modulu <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Nastavení klávesnice na obrazovce"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Klávesnice zařízení"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Nastavení vestavěné klávesnice"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Vestavěná klávesnice"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Nastavení vestavěné fyzické klávesnice"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Vývoj"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Umožňuje nastavit možnosti pro vývoj aplikací"</string>
     <string name="enable_adb" msgid="7982306934419797485">"Ladění USB"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"Ladění USB je určeno pouze pro účely vývoje. Lze pomocí něho kopírovat data mezi počítačem a zařízením, instalovat aplikace do zařízení bez upozornění a číst data protokolů."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Zvolte gadget"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Zvolte widget"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Podrobnosti pro UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Podrobnosti o používání sítě aplikací <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Přijato bytů: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Odesláno bytů: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Celkem bytů: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"Podrobnosti o využívání CPU aplikací <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Čas uživatele:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Systémový čas:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Celková doba:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Počet spuštění: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g> dní <xliff:g id="HOURS">%2$d</xliff:g> h <xliff:g id="MINUTES">%3$d</xliff:g> min <xliff:g id="SECONDS">%4$d</xliff:g> s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g> h <xliff:g id="MINUTES">%2$d</xliff:g> min <xliff:g id="SECONDS">%3$d</xliff:g> s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g> min <xliff:g id="SECONDS">%2$d</xliff:g> s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g> s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Balíčky sdílející toto UID:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Údaje o využití baterie nejsou k dispozici"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Senzor:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Částečný zámek probuzení:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Senzor je používán následujícími balíčky:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Použito <xliff:g id="COUNT">%1$d</xliff:g>krát balíčkem <xliff:g id="PACKAGE">%2$s</xliff:g>\n"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Použito <xliff:g id="COUNT">%1$d</xliff:g>krát některým z následujících:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Spuštěné"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Obrazovka zapnutá"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Telefon zapnutý"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Doba bez režimu spánku:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Doba se zapnutou obrazovkou:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Doba se zapnutým telefonem:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"Na baterii:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Připojeno:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Statistika použití"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Statistika použití"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Řadit podle:"</string>
@@ -865,12 +908,19 @@
     <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>
     <string name="battery_since_reset" msgid="7464546661121187045">"Využití baterie od obnovení"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"doba provozu na baterii: <xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> od odpojení"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Nabíjení"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Obrazovka zapnutá"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS aktivní"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Probudit"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Signál telefonu"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Doba provozu zařízení"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"Doba provozu sítě WiFi"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"Doba provozu sítě WiFi"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Doba provozu modulu Wi-Fi"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Doba provozu sítě Wi-Fi"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> – <xliff:g id="NUMBER">%2$s</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Podrobnosti využití baterie"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Podrobnosti používání"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Telefon v pohotovostním režimu"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"Doba provozu procesoru"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPU v popředí"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Zakázat režim spánku"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Připojení WiFi aktivní"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Telefon"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Odeslaná data"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Přijatá data"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Informace o aplikaci"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Nastavení aplikací"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Nastavení zobrazení"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Nastavení WiFi"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Nastavení Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Nastavení Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Využití baterie hlasovými hovory"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Využití baterie v pohotovostním režimu telefonu"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Využití baterie technologií Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Vypněte technologii Bluetooth, když ji nepoužíváte."</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Zkuste se připojit k jinému zařízení bluetooth"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Využití baterie spuštěnými aplikacemi"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Spotřeba energie podle aplikací"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Ukončete aplikaci nebo ji odinstalujte"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Nepoužíváte-li systém GPS, vypněte jej."</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"GPS můžete ručně nastavit, aby jej aplikace nemohly používat."</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"Tato aplikace může nabízet nastavení pro snížení využití baterie"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> od odpojení"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Při posledním odpojení pro <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Není nainstalováno"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Žena"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Muž"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Nainstalován modul syntézy řeči"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Před použitím nový modul povolte"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Povolit aplikacím přístup k zabezpečeným certifikátům a dalším pověřením"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Zadejte heslo"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Zadejte heslo úložiště pověření."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Instalace z karty SD"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Nainstalovat šifrované certifikáty z karty SD"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Instalovat z úložiště USB"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Instalace z karty SD"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Instalovat šifrované certifikáty z úložiště USB"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Nainstalovat šifrované certifikáty z karty SD"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Nastavit heslo"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Nastavení nebo změna hesla úložiště pověření"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Vymazat úložiště"</string>
@@ -1068,6 +1124,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Systém souborů EFS (Encrypted File System)"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Šifrovat soukromá uživatelská data"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Aktivovat v tomto zařízení úložiště pro soukromá uživatelská data, které využívá šifrovaný systém souborů"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Aktivace systému souborů EFS vyžaduje vymazání dat ze zařízení."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Deaktivace systému souborů EFS vyžaduje vymazání dat ze zařízení."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Povolit"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Vypnout"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Zrušit"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Změna režimu systému souborů EFS byla zrušena."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Upozornění systému souborů EFS."</string>
     <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>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Zálohování a obnovení"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Osobní údaje"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Zálohovat moje data"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Zálohovat moje nastavení a další data aplikací."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Zálohovat data aplikací, hesla sítí Wi-Fi a další nastavení na serverech Google"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Automatické obnovení"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Pokud přeinstaluji aplikaci, chci obnovit zálohovaná nastavení a další data."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Pokud přeinstaluji aplikaci, chci obnovit zálohovaná nastavení a další data"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Záloha"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Opravdu chcete zrušit zálohování nastavení a dat aplikací a vymazat všechny kopie těchto dat na serverech Google?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Opravdu chcete zrušit zálohování hesel sítí Wi-Fi, záložek a dalších nastavení a dat aplikací a vymazat všechny kopie těchto dat na serverech Google?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Nastavení správce zařízení"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Správce zařízení"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Deaktivovat"</string>
diff --git a/res/values-da/arrays.xml b/res/values-da/arrays.xml
index 567e194..97b1cc3 100644
--- a/res/values-da/arrays.xml
+++ b/res/values-da/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Aldrig når tilsluttet"</item>
     <item msgid="1986753720941888596">"Aldrig"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"CPU-brug"</item>
-    <item msgid="6401018715947316517">"Netværksbrug"</item>
-    <item msgid="188092590354892392">"GPS-brug"</item>
-    <item msgid="8414109131222049141">"Sensorbrug"</item>
-    <item msgid="1327904325081257093">"Delvis vågen brug"</item>
-    <item msgid="4832254146664706277">"Anden brug"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Siden sidste afbrydelse"</item>
-    <item msgid="166936313535197598">"I alt siden start"</item>
-    <item msgid="4793941382744963893">"I alt hele tiden"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Brugstid"</item>
     <item msgid="1908750532762193304">"Start optælling"</item>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 3a139e1..c128c10 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Demonter SD-kort"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Formater SD-kort"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Demonter USB-lager"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Demonter SD-kort"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Slet USB-lager"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Slet SD-kort"</string>
     <string name="small_font" msgid="2295331917424072635">"Lille"</string>
     <string name="medium_font" msgid="2068475425515133701">"Normal"</string>
     <string name="large_font" msgid="599055175160971446">"Stor"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"SD-kort"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-lager"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-kort"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Batteristatus:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Strømstik:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Batteriskala:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Ændringerne træder i kraft, når USB-kablet tilsluttes igen"</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Aktiver USB-masselagring"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Bytes i alt:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Der er intet SD-kort"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"USB-lager ikke monteret"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Der er intet SD-kort"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Ledige bytes:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"SD-kortet bruges som en masselagringsenhed"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"SD-kortet kan nu fjernes sikkert"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"SD-kortet blev fjernet, mens det stadig var i brug."</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USB bruges som masselager"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"SD-kortet bruges som en masselagringsenhed"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"USB-lager kan fjernes sikkert"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"SD-kortet kan nu fjernes sikkert"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"USB-lager fjernet under brug!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"SD-kortet blev fjernet, mens det stadig var i brug."</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Brugte bytes:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Scanner SD-kort efter medier ..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"SD-kortet er monteret som skrivebeskyttet"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Scanner USB-lager for medier…"</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Scanner SD-kort efter medier ..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"USB-lager er skrivebeskyttet"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"SD-kortet er monteret som skrivebeskyttet"</string>
     <string name="next_label" msgid="4693520878012668114">"Næste"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Landestandard"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Vælg dit sprog"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Vælg aktivitet"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Enhedsoplysninger"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Batterioplysninger"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Batterioversigt"</string>
     <string name="display_label" msgid="7403874003169865762">"Visning"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Telefonoplysninger"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"SD-kort"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB-lager"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SD-kort"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Proxyindstillinger"</string>
     <string name="cancel" msgid="6859253417269739139">"Annuller"</string>
     <string name="settings_label" msgid="1626402585530130914">"Indstillinger"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Indstillinger"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Indstillinger"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Flytilstand"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Deaktiver alle trådløse forbindelser"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Som højttalertelefon"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Til musik og medier"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Husk indstillinger"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Brug Near Field Communication til at læse og udveksle tags"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Slå Wi-Fi til"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Indstillinger for Wi-Fi"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Angiv, hvornår der skal skiftes fra Wi-Fi til mobile data"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Der opstod et problem med indstillingen af dvalepolitikken."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MAC-adresse"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP-adresse"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"IP-indstillinger"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Gem"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Annuller"</string>
@@ -411,7 +427,7 @@
     <string name="vibrate_summary" msgid="7378130397830790458">"Vibration ved opkald og underretninger"</string>
     <string name="notification_sound_title" msgid="6316316069880531693">"Ringetone for meddelelser"</string>
     <string name="notification_sound_summary" msgid="2953599929394109819"></string>
-    <string name="notification_pulse_title" msgid="1247988024534030629">"Blinkende underretningslys"</string>
+    <string name="notification_pulse_title" msgid="1247988024534030629">"Blinkende meddelelseslys"</string>
     <string name="notification_pulse_summary" msgid="6899220780534617152">"Gentagne lysblink i trackball ved nye meddelelser"</string>
     <string name="incoming_call_volume_title" msgid="8073714801365904099">"Ringetone"</string>
     <string name="notification_volume_title" msgid="2012640760341080408">"Meddelelse"</string>
@@ -427,7 +443,7 @@
     <string name="sound_effects_enable_title" msgid="3197313718929122833">"Lyd ved valg"</string>
     <string name="sound_effects_enable_summary_on" msgid="6154141289879491329">"Afspil lyd, når der foretages et valg på skærmen"</string>
     <string name="sound_effects_enable_summary_off" msgid="3447739581759560125">"Afspil lyd, når der foretages et valg på skærmen"</string>
-    <string name="lock_sounds_enable_title" msgid="1575990840389107141">"Lyde ved skærmlås "</string>
+    <string name="lock_sounds_enable_title" msgid="1575990840389107141">"Lyde ved skærmlås"</string>
     <string name="lock_sounds_enable_summary_on" msgid="145741024028391473">"Afspil lyde, når skærmen låses og låses op"</string>
     <string name="lock_sounds_enable_summary_off" msgid="8481243116223542804">"Afspil lyde, når skærmen låses og låses op"</string>
     <string name="haptic_feedback_enable_title" msgid="6311736559245411290">"Feedback ved berøring"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
     <string name="device_status" msgid="607405385799807324">"Status"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Telefonnummer, signal osv."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"Lagerplads, SD-kort og tlf."</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Indstillinger for lagerplads på SD-kort og telefon"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Demonter SD-kort, vis ledig lagerplads"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Lagerplads"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Indstillinger for lager"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Demonter USB-lager, vis ledig lagerplads"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Demonter SD-kort, vis ledig lagerplads"</string>
     <string name="status_number" msgid="5123197324870153205">"Mit telefonnummer"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"PRL-version"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Utilgængelig"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Oppetid"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Opvågningstid"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Intern lagerplads på telefonen"</string>
-    <string name="sd_memory" msgid="151871913888051515">"SD-kort"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Internt lager"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"USB-lager"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"SD-kort"</string>
     <string name="memory_available" msgid="418542433817289474">"Ledig plads"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Insæt et SD-kort, der skal monteres"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Montér SD-kort"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Montér SD-kortet"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"Demonter SD-kort"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Demonter det interne USB-lager"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Demonter SD-kortet for at fjerne det sikkert"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Isæt USB-lager til mont."</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Insæt et SD-kort, der skal monteres"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Isæt delt hukommelse"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Montér SD-kort"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Monter det interne USB-lager"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Montér SD-kortet"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Slet USB-lager"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Slet SD-kort"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Sletter alle data på telefonens interne USB-lager, f.eks. musik og billeder."</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Sletter alle data på telefonens SD-kort, f.eks. musik og billeder"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Utilgængelig"</string>
     <string name="read_only" msgid="6702420168629076340">" (Skrivebeskyttet)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Demonter SD-kort"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Hvis du demonterer SD-kortet, vil nogle af de programmer, som du bruger, stoppe, og de kan være utilgængelige, indtil du monterer SD-kortet igen."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Demonteringen af SD-kortet mislykkedes"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"SD-kortet kan ikke demonteres. Prøv igen senere. "</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"SD-kortet demonteres. Se status i meddelelsesområdet."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Demonter USB-lager"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Demonter SD-kort"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Hvis du demonterer USB-lager, vil nogle af de programmer, som du bruger, stoppe, og de kan være utilgængelige, indtil du monterer USB-lager igen."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Hvis du demonterer SD-kortet, vil nogle af de programmer, som du bruger, stoppe, og de kan være utilgængelige, indtil du monterer SD-kortet igen."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Demontering af USB mislykkedes"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Demonteringen af SD-kortet mislykkedes"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"USB-lager kan ikke demonteres. Prøv igen senere."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"SD-kortet kan ikke demonteres. Prøv igen senere."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"USB-lager demonteres."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"SD-kort bliver demonteret."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Demontering"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Demontering i gang"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Batteristatus"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Nulstillingen af APN-standardindstillinger er afsluttet"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Gendannelse af fabriksdata"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Sletter alle data på telefonen"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Dette sletter alle data fra din telefon, inklusive :"\n<li>"Din Google-konto"</li>\n<li>"System- og programdata samt indstillinger"</li>\n<li>"Downloadede programmer"</li>\n"Det sletter ikke:"\n<li>"Nuværende systemsoftware og programbundter"</li>\n<li>"SD-kortfiler, som f.eks. musik og fotos"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Dette sletter alle data fra telefonens "<b>"interne lager"</b>", bl.a.:"\n\n<li>"din Google-konto"</li>\n<li>"system- og programdata og -indstillinger"</li>\n<li>"downloadede programmer"</li>\n\n"Slet musik, billeder og andre brugerdata ved også at slette "<b>"USB-lager"</b>"."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Dette sletter alle data fra telefonens "<b>"interne lager"</b>", bl.a. :"\n\n<li>"din Google-konto"</li>\n<li>"system- og programdata og -indstillinger"</li>\n<li>"downloadede programmer"</li>\n\n"Slet musik, billeder og andre brugerdata ved også at slette "<b>"SD-kortet"</b>"."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Slet USB-lager"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Slet SD-kort"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Slet alle data på telefonens interne USB-lager, f.eks. musik og billeder."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Slet alle data på telefonens SD-kort, f.eks. musik og billeder."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Nulstil telefon"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Slet alle dine personlige oplysninger og downloadede programmer? Denne handlíng kan ikke fortrydes."</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Slet alt"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Tegn dit oplåsningsmønster"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Du skal tegne dit oplåsningsmønster for at bekræfte, at telefonen nulstilles."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Der blev ikke foretaget nogen nulstilling, fordi tjenesten Systemoprydning ikke er tilgængelig."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Formater SD-kort."</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Sletter alle data på SD-kortet"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Denne handling rydder det SD-kort, der sidder i telefonen. Du mister ALLE data på kortet!"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Formater SD-kort"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Vil du formatere dit SD-kort og slette alle dine medier? Handlingen kan ikke annulleres."</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Slet USB-lager"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Slet SD-kort"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Sletter alle data i USB-lager"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Sletter alle data på SD-kortet"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Denne handling sletter USB-lager. Du mister "<b>"alle"</b>" data!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Denne handling rydder SD-kortet. Du mister "<b>"alle"</b>" data på kortet!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Slet USB-lager"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Slet SD-kort"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"Vil du slette USB-lager og alle filer, som er gemt der? Handlingen kan ikke fortrydes!"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"Vil du slette SD-kort og alle filer, som er gemt der? Handlingen kan ikke fortrydes!"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Slet alt"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Tegn dit oplåsningsmønster"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Du skal tegne dit oplåsningsmønster for at bekræfte et SD-kortformat."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Du skal tegne dit oplåsningsmønster for at bekræfte, at du vil slette USB-lager."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Du skal tegne dit oplåsningsmønster for at bekræfte, at du vil slette SD-kortet."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Indstillinger for opkald"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Opsæt voicemail, viderestilling af opkald, ventende opkald, opkalds-id"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Tethering"</string>
@@ -609,7 +649,7 @@
     <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 mobilnetvæ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_street_level" msgid="7456259025474443314">"Præcis placering på gadeplan"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Placering på gadeplan (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>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Program"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Data"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Afinstaller"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Deaktiver"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Aktiver"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Ryd data"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Afinstaller opdateringer"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Du har valgt at starte dette program som standard for nogle handlinger."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Der er ikke angivet nogen standarder."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Ryd standarder"</string>
     <string name="unknown" msgid="1592123443519355854">"Ukendte"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Sorter"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Sorter efter navn"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Sorter efter størrelse"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Vis kørende tjenester"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Cachelagrede processer"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Administrer plads"</string>
     <string name="filter" msgid="2018011724373033887">"Filter"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Vælg indstillinger for filtret"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Alle"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Overført"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"Kørende"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"På SD-kort"</string>
-    <string name="loading" msgid="3200408047793887917">"Indlæser ..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"USB-lager"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"På SD-kort"</string>
+    <string name="disabled" msgid="9206776641295849915">"Deaktiveret"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Ingen programmer."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Internt lager"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USB-lager"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SD-kortlager"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Beregner størrelse igen ..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Slet"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Alle dette programs data slettes permanent. Det omfatter alle filer, indstillinger, konti, databaser osv."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"version <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Flyt"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Flyt til telefon"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Flyt til SD-kort"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Flyt til USB-lager"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Flyt til SD-kort"</string>
     <string name="moving" msgid="6431016143218876491">"Flytter"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Der er ikke nok lagerplads tilbage."</string>
     <string name="does_not_exist" msgid="837163572898468245">"Programmet eksisterer ikke."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"Den angivne sti til installation er ikke gyldig."</string>
     <string name="system_package" msgid="1030561474413022831">"Systemopdateringerne kan ikke installeres på eksterne medier."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Tving til at standse"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Dette program bliver genstartet med det samme. Er du sikker på, at du vil tvangsstandse?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"At tvinge et program til at stoppe kan medføre, at det ikke fungerer korrekt. Er du sikker?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Flyt program"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Programmet kunne ikke flyttes. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Foretrukken installationsplacering"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Skift den foretrukne installationsplacering for nye programmer."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Lagerforbrug"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Vis lagerplads, der bruges af programmer"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Kørende tjenester"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Vis og kontroller kørende tjenester"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Genstarter"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Der er ingen kørende tjenester"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Stop tjeneste?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"Denne tjeneste kører ikke, før den startes igen. Det kan have uønskede konsekvenser for programmet <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Stop"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Annuller"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Startet af program: tryk for at stoppe"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: tryk for at administrere"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Ledig: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> i <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Andre: <xliff:g id="MEMORY">%2$s</xliff:g> i <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Proces: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Cachelagret baggrundsproces"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Intet kører."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Startet af program."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> ledig"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> brugt"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> proces og <xliff:g id="NUMSERVICES">%2$d</xliff:g> tjeneste"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> proces og <xliff:g id="NUMSERVICES">%2$d</xliff:g> tjenester"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processer og <xliff:g id="NUMSERVICES">%2$d</xliff:g> tjeneste"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processer og <xliff:g id="NUMSERVICES">%2$d</xliff:g> tjenester"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Program i gang"</string>
+    <string name="no_services" msgid="7133900764462288263">"Ikke aktiv"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Tjenester"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Processer"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Stop"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Indstillinger"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Denne tjeneste er startet af dens program. Hvis du stopper den, mislykkes programmet."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Dette program kan ikke stoppes på en sikker måde. Det kan slette noget af dit seneste arbejde."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Dette er en gammel programproces, der beholdes for større hastighed, hvis der bliver brug for den igen. Der er normalt ingen grund til at stoppe den."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: aktuelt i brug. Tryk på Indstillinger for at håndtere."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Den hovedproces, der er i brug."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Tjenesten <xliff:g id="COMP_NAME">%1$s</xliff:g> er i brug."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Udbyderen <xliff:g id="COMP_NAME">%1$s</xliff:g> er i brug."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Stop systemtjeneste?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Er du sikker på, at du vil stoppe denne systemtjeneste? Hvis du gør, kan nogle af funktionerne på din telefon holde op med at fungere korrekt, indtil du slukker og tænder igen."</string>
     <string name="language_settings" msgid="502219872342167227">"Sprog og tastatur"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Indstillinger for sprog og tastatur"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Angiv landestandard (sprog og område), tekstinput…"</string>
-    <string name="language_category" msgid="3391756582724541530">"Indstilling af landestandard"</string>
-    <string name="text_category" msgid="6342540511465136739">"Indstillinger for tekst"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Sprogindstillinger"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Indstillinger for tastatur"</string>
     <string name="phone_language" msgid="1165758957501090679">"Vælg sprog"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Automatisk erstatning"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Tester"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Telefonoplysninger"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Batterioplysninger"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Batterioversigt"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Hurtig start"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Angiv tastaturgenveje til start af programmer"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Tildel program"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Administrer valgmuligheder for tekstinput"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"<xliff:g id="IME_NAME">%1$s</xliff:g>-indstillinger"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Indstillinger for skærmens tastatur"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Enhedens tastatur"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Indstillinger for indbygget tastatur"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Indbygget tastatur"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Indstillinger for indbygget fysisk tastatur"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Udvikling"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Angiv indstillinger for programudvikling"</string>
     <string name="enable_adb" msgid="7982306934419797485">"USB-fejlretning"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"USB-fejlretning er kun beregnet til udvikling og kan bruges til at kopiere data mellem din computer og enheden, installere programmer på enheden uden meddelelser og læse logdata."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Vælg gadget"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Vælg widget"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Detaljer for UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Netværksbrugsdetaljer for <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Modtagne bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Sendte bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Bytes i alt: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"CPU-brugsdetaljer for <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Brugertid:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Systemtid:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Tid i alt:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Start: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g>d <xliff:g id="HOURS">%2$d</xliff:g>t <xliff:g id="MINUTES">%3$d</xliff:g>m <xliff:g id="SECONDS">%4$d</xliff:g>s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g>t <xliff:g id="MINUTES">%2$d</xliff:g>m <xliff:g id="SECONDS">%3$d</xliff:g>s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g>m <xliff:g id="SECONDS">%2$d</xliff:g>s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g>S"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Pakker, der deler denne UID:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Der er ingen tilgængelige batteribrugsdata"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Sensor:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Delvis Wakelock:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Sensor brugt af pakker:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Brugt <xliff:g id="COUNT">%1$d</xliff:g> gange af <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Brugt <xliff:g id="COUNT">%1$d</xliff:g> gange af en af:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Kørende"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Skærm til"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Telefon til"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Tid brugt uden dvale:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Tid brugt med skærmen tændt:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Tid brugt med telefonen tændt:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"På batteri:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Tilsluttet:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Brugerstatistikker"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Brugerstatistikker"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Sorter efter:"</string>
@@ -865,12 +908,19 @@
     <string name="power_usage_summary" msgid="7237084831082848168">"Hvad der har brugt batteriet"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Batteriforbrug siden afbrydelse"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"Batteriforbrug siden nulstilling"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> på batteri"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> siden afbrydelse"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Oplader"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Skærm til"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS slået til"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Aktiv"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Telefonsignal"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Enhedens opvågningstid"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"Wi-Fi til tiden"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"Wi-Fi til tiden"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Wi-Fi til tiden"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Wi-Fi til tiden"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> -  <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Oplysninger om batteriforbrug"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Brugsdetaljer"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Telefonen er ikke aktiv"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"CPU i alt"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPU forgrund"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Hold aktiv"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Wi-Fi aktiv"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Telefon"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Data sendt"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Data modtaget"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Programoplysninger"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Indstillinger for programmer"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Indstillinger for visning"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Indstillinger for Wi-Fi"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Indstillinger for Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Indstillinger for Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Batteri brugt af stemmeopkald"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Batteri brugt, når telefon ikke er aktiv"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batteri brugt af Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Slå Bluetooth fra, når du ikke bruger det"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Prøv at oprette forbindelse til en anden Bluetooth-enhed"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Batteri brugt af programmer, når de kører"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Batteri brugt af program"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Stop eller afinstaller programmet"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Slå GPS fra, når den ikke bruges"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Administrer GPS manuelt for at forhindre programmet i at bruge den"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"Dette program har muligvis indstillinger, der kan mindske batteriforbruget"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> siden afbrydelse"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Siden sidste afbrydelse for <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Ikke installeret"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Kvinde"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Mand"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Talesyntesemaskine er installeret"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Aktiver ny maskine før brug"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Giv programmer adgang til sikre certifikater og andre oplysninger"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Indtast adgangskode"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Indtast adgangskoden til oplysningslagringen."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Installer fra SD-kort"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Installer krypterede certifikater fra SD-kortet"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Installer fra USB-lager"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Installer fra SD-kort"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Installer krypt. cert. fra USB"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Installer krypterede certifikater fra SD-kortet"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Angiv adgangskode"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Angiv eller skift adgangskode til oplysningslagringen"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Ryd lager"</string>
@@ -1068,6 +1124,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Krypteret filsystem"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Krypter private brugerdata"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Aktiver krypteret filsystemlager for private brugerdata på denne enhed"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Aktivering af krypterede filsystemer kræver en enhedsdatasletter."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Deaktivering af krypterede filsystemer kræver en enhedsdatasletter."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Aktivér"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Deaktiver"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Annuller"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Ændring af tilstand for krypterede filsystemer blev anulleret."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Advarsel for krypterede filsystemer."</string>
     <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>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Sikkerhedskopiering og gendannelse"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Personlige oplysninger"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Sikkerhedskopier mine data"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Sikkerhedskopier mine indstillinger og andre programdata."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Sikkerhedskopier programdata, Wi-Fi-adgangskoder og andre indstillinger på Googles servere"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Automatisk gendannelse"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Hvis jeg geninstallerer et program, skal sikkerhedskopierede indstillinger eller andre data gendannes."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Hvis jeg geninstallerer et program, skal sikkerhedskopierede indstillinger eller andre data gendannes"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Sikkerhedskopi"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Er du sikker på, at du vil holde op med at sikkerhedskopiere dine indstillinger og programdata og slette alle kopier på Googles servere?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Er du sikker på, at du vil afbryde sikkerhedskopieringen af dine Wi-Fi-adgangskoder, bogmærker og andre indstillinger og slette alle kopier på Googles servere?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Enhedsadministrationsindstillinger"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Enhedsadministrator"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Deaktiver"</string>
diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml
index b8e9fc0..a72b6c7 100644
--- a/res/values-de/arrays.xml
+++ b/res/values-de/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Niemals, wenn im Netzbetrieb"</item>
     <item msgid="1986753720941888596">"Niemals"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"CPU-Verwendung"</item>
-    <item msgid="6401018715947316517">"Netzwerknutzung"</item>
-    <item msgid="188092590354892392">"GPS-Verwendung"</item>
-    <item msgid="8414109131222049141">"Sensornutzung"</item>
-    <item msgid="1327904325081257093">"Verwendung im Teilwachzustand"</item>
-    <item msgid="4832254146664706277">"Andere Verwendung"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Seit dem letzten Ausstecken"</item>
-    <item msgid="166936313535197598">"Seit Start insgesamt"</item>
-    <item msgid="4793941382744963893">"Insgesamt in Gesamtzeit"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Nutzungszeit"</item>
     <item msgid="1908750532762193304">"Startzähler"</item>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 28fe013..9e3629c 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"ASU"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"SD-Karte entnehmen"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"SD-Karte formatieren"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"USB-Speicher trennen"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"SD-Karte entnehmen"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"USB-Speicher löschen"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"SD-Karte löschen"</string>
     <string name="small_font" msgid="2295331917424072635">"Klein"</string>
     <string name="medium_font" msgid="2068475425515133701">"Mittel"</string>
     <string name="large_font" msgid="599055175160971446">"Groß"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"SD-Karte"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-Speicher"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-Karte"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Akkustatus:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Stromanschluss:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Akkuanzeige:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Die Änderungen werden nach dem erneuten Anschließen des USB-Kabels übernommen."</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"USB-Massenspeicher aktivieren"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Bytes insgesamt:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Keine SD-Karte"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"USB-Speicher nicht bereitgest."</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Keine SD-Karte"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Verfügbare Bytes:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"SD-Karte wird als Massenspeichergerät verwendet"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"Die SD-Karte kann jetzt entfernt werden."</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"Die SD-Karte wurde während der Verwendung entfernt!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USB-Speicher wird als Massenspeicher verwendet"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"SD-Karte wird als Massenspeichergerät verwendet"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"USB-Speicher kann nun entfernt werden"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"Die SD-Karte kann jetzt entfernt werden."</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"USB-Speicher wurde während Verw. entfernt."</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"Die SD-Karte wurde während der Verwendung entfernt!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Verwendete Bytes:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"SD-Karte wird auf Medien gescannt..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"SD-Karte schreibgeschützt aktiviert"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"USB-Sp. auf Medien scannen"</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"SD-Karte wird auf Medien gescannt..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"USB-Speicher schreibgeschützt"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"SD-Karte schreibgeschützt aktiviert"</string>
     <string name="next_label" msgid="4693520878012668114">"Weiter"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Sprache"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Sprache auswählen"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Aktion auswählen"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Geräteinfo"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Akkuinfo"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Akkuprotokoll"</string>
     <string name="display_label" msgid="7403874003169865762">"Display"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Telefoninfo"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"SD-Karte"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB-Speicher"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SD-Karte"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Proxy-Einstellungen"</string>
     <string name="cancel" msgid="6859253417269739139">"Abbrechen"</string>
     <string name="settings_label" msgid="1626402585530130914">"Einstellungen"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Ein- stellungen"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Einstellungen"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Flugmodus"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Alle drahtlosen Verbindungen deaktivieren"</string>
@@ -208,7 +218,7 @@
     <string name="airplane_mode_turning_off" msgid="3393168549611505996">"Drahtlosverbindungen werden aktiviert..."</string>
     <string name="radio_controls_title" msgid="5868688473587168882">"Drahtlos &amp; Netzwerke"</string>
     <string name="wireless_networks_settings_title" msgid="149274247949769551">"Einstellungen für Drahtlosnetzwerke"</string>
-    <string name="radio_controls_summary" msgid="2998818677094465517">"WLAN, Bluetooth, Flugmodus, mobile Netzwerke und VPNs verwalten"</string>
+    <string name="radio_controls_summary" msgid="2998818677094465517">"WLAN, Bluetooth, Flugmodus, Mobilfunknetze und VPNs verwalten"</string>
     <string name="roaming" msgid="3596055926335478572">"Daten-Roaming"</string>
     <string name="roaming_enable" msgid="3737380951525303961">"Bei Roaming mit Datendienst verbinden"</string>
     <string name="roaming_disable" msgid="1295279574370898378">"Bei Roaming mit Datendienst verbinden"</string>
@@ -245,9 +255,9 @@
     <string name="unlock_set_unlock_pattern_title" msgid="2912067603917311700">"Muster"</string>
     <string name="unlock_set_unlock_pattern_summary" msgid="3018395214738645405">"Muster zum Entsperren des Displays zeichnen"</string>
     <string name="unlock_set_unlock_pin_title" msgid="5846029709462329515">"PIN"</string>
-    <string name="unlock_set_unlock_pin_summary" msgid="4131169672844263316">"Geben Sie eine numerische PIN zum Entsperren ein."</string>
+    <string name="unlock_set_unlock_pin_summary" msgid="4131169672844263316">"Numerische PIN zum Entsperren des Displays eingeben"</string>
     <string name="unlock_set_unlock_password_title" msgid="8775603825675090937">"Passwort"</string>
-    <string name="unlock_set_unlock_password_summary" msgid="4623254789833899286">"Geben Sie ein Passwort zum Entsperren des Displays ein."</string>
+    <string name="unlock_set_unlock_password_summary" msgid="4623254789833899286">"Passwort zum Entsperren des Displays eingeben"</string>
     <string name="unlock_set_unlock_disabled_summary" msgid="736557879526940324">"Vom Remote-Telefonadministrator deaktiviert"</string>
     <string name="unlock_disable_lock_title" msgid="1427036227416979120">"Display-Sperre deaktivieren"</string>
     <string name="unlock_disable_lock_pattern_summary" msgid="6801602880568869201">"Entsperrungsmuster entfernen"</string>
@@ -281,7 +291,7 @@
     <string name="bluetooth_device_info" msgid="6644515376523965073">"Bluetooth-Geräteinfo"</string>
     <string name="bluetooth_enter_pin_msg" msgid="856962526754150334">\n"PIN für Pairing mit \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" eingeben. Versuchen Sie 0000 oder 1234."</string>
     <string name="bluetooth_enter_passkey_msg" msgid="8121515818772179228">\n"Schlüssel zum Pairing mit \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" eingeben."</string>
-    <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Bestätigen Sie zum Paaren mit \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\", dass der folgende Schlüssel angezeigt wird: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+    <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Bestätigen Sie zum Paaren mit \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\", dass es den folgenden Schlüssel anzeigt: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
     <string name="bluetooth_incoming_pairing_msg" msgid="1076613564387784476">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n"möchte sich paaren."</string>
     <string name="bluetooth_display_passkey_msg" msgid="3048496029389441579">"Geben Sie zum Pairing <xliff:g id="PASSKEY">%2$s</xliff:g> in \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" ein."</string>
     <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Paaren"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Als Lautsprechertelefon"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Für Musik und Medien"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Einstellungen speichern"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Nahfeldkommunikation zum Lesen und Austauschen von Tags verwenden"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"WLAN"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"WLAN aktivieren"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"WLAN-Einstellungen"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Festlegen, wann von WLAN auf mobile Daten umgeschaltet werden soll"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Beim Einrichten der Standby-Richtlinie ist ein Problem aufgetreten."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MAC-Adresse"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP-Adresse"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"IP-Einstellungen"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Speichern"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Abbrechen"</string>
@@ -398,7 +414,7 @@
     <string name="display_settings_title" msgid="1708697328627382561">"Display"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Toneinstellungen"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Lautlosmodus"</string>
-    <string name="silent_mode_summary" msgid="3309650676072917899">"Alle Töne (außer für Medienwiedergabe &amp; Wecker) stummschalten"</string>
+    <string name="silent_mode_summary" msgid="3309650676072917899">"Alle Töne (außer für Wecker &amp; Medienwiedergabe) stummschalten"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Alle Sounds außer Medien sind stumm geschaltet"</string>
     <string name="ringtone_title" msgid="5379026328015343686">"Klingelton"</string>
     <string name="ringtone_summary" msgid="2630023412632683493"></string>
@@ -447,7 +463,7 @@
     <string name="dock_sounds_enable_title" msgid="3659084028644948905">"Ton bei Dock-Anschluss"</string>
     <string name="dock_sounds_enable_summary_on" msgid="8491180514199743771">"Beim Anschließen oder Trennen des Telefons vom Dock Ton abspielen"</string>
     <string name="dock_sounds_enable_summary_off" msgid="3151046599205265919">"Beim Anschließen oder Trennen des Telefons vom Dock keinen Ton abspielen"</string>
-    <string name="sync_settings" msgid="9186125469300013491">"Konten&amp;Synchronisierung"</string>
+    <string name="sync_settings" msgid="9186125469300013491">"Konten &amp; Synchr."</string>
     <string name="sync_settings_summary" msgid="2962179505214965667">"Konten hinzufügen und entfernen und Kontoeinstellungen ändern"</string>
     <string name="search_settings" msgid="1910951467596035063">"Suche"</string>
     <string name="search_settings_summary" msgid="9205656546570654169">"Sucheinstellungen und Suchverlauf verwalten"</string>
@@ -496,15 +512,16 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
     <string name="device_status" msgid="607405385799807324">"Status"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Telefonnummer, Signal usw."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"SD-Karte&amp;Telefonspeicher"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Einstellungen für SD-Karte &amp; Telefonspeicher"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"SD-Karte entnehmen, verfügbaren Speicher anzeigen"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Speicher"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Speichereinstellungen"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"USB-Speicher trennen, verfügbaren Speicher anzeigen"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"SD-Karte entnehmen, verfügbaren Speicher anzeigen"</string>
     <string name="status_number" msgid="5123197324870153205">"Meine Telefonnummer"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"PRL-Version"</string>
     <string name="status_meid_number" msgid="1751442889111731088">"MEID"</string>
-    <string name="status_network_type" msgid="3279383550222116235">"Mobiler Netzwerktyp"</string>
-    <string name="status_data_state" msgid="5503181397066522950">"Mobiler Netzwerkstatus"</string>
+    <string name="status_network_type" msgid="3279383550222116235">"Art des Mobilfunknetzes"</string>
+    <string name="status_data_state" msgid="5503181397066522950">"Status des Mobilfunknetzes"</string>
     <string name="status_service_state" msgid="2323931627519429503">"Servicestatus"</string>
     <string name="status_signal_strength" msgid="3732655254188304547">"Signalstärke"</string>
     <string name="status_roaming" msgid="2638800467430913403">"Roaming"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Nicht verfügbar"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Betriebszeit"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Aktivzeit"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Interner Telefonspeicher"</string>
-    <string name="sd_memory" msgid="151871913888051515">"SD-Karte"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Interner Speicher"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"USB-Speicher"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"SD-Karte"</string>
     <string name="memory_available" msgid="418542433817289474">"Verfügbarer Speicher"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"SD-Karte zur Bereitstellung einlegen"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"SD-Karte bereitstellen"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"SD-Karte bereitstellen"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"SD-Karte entnehmen"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Internen USB-Speicher trennen"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"SD-Karte trennen, damit Sie sie sicher entfernen können"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"USB-Sp. für Bereitst. einlegen"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"SD-Karte zur Bereitstellung einlegen"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Speicher bereitstellen"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"SD-Karte bereitstellen"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Int. USB-Speicher bereitst."</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"SD-Karte bereitstellen"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"USB-Speicher löschen"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"SD-Karte löschen"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Löscht alle Daten, z. B. Musik und Fotos, aus d. int. USB-Speicher d. Telefons"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Löscht sämtliche Daten, beispielsweise Musik und Fotos, von der SD-Karte des Telefons."</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Nicht verfügbar"</string>
     <string name="read_only" msgid="6702420168629076340">" (schreibgeschützt)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"SD-Karte entnehmen"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Wenn Sie die SD-Karte entfernen, werden einige von Ihnen verwendete Anwendungen angehalten und sind nicht mehr verfügbar, bis Sie die SD-Karte wieder einsetzen."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Fehler beim Entfernen der SD-Karte"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"SD-Karte kann nicht entfernt werden. Versuchen Sie es später erneut."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"SD-Karte wird getrennt. Überprüfen Sie den Status im Benachrichtigungsfeld."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"USB-Speicher trennen"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"SD-Karte entnehmen"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Wenn Sie den USB-Speicher trennen, werden einige von Ihnen verwendete Anwendungen angehalten. Diese stehen möglicherweise erst dann wieder zur Verfügung, wenn Sie den USB-Speicher wieder bereitstellen."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Wenn Sie die SD-Karte entfernen, werden einige von Ihnen verwendete Anwendungen angehalten und sind nicht mehr verfügbar, bis Sie die SD-Karte wieder einsetzen."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Trennen von USB-Sp. fehlg."</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Fehler beim Entfernen der SD-Karte"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"USB-Speicher kann nicht getrennt werden. Versuchen Sie es später noch einmal."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"SD-Karte kann nicht entfernt werden. Versuchen Sie es später erneut."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"USB-Speicher wird getrennt."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"SD-Karte wird getrennt."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Trennen..."</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Trennung..."</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Akkustatus"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Zurücksetzen auf Standard-APN-Einstellungen abgeschlossen"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Auf Werkszustand zurück"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Löscht alle Daten auf dem Telefon"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Hierdurch werden alle Daten von Ihrem Telefon gelöscht, darunter"\n<li>"Ihr Google-Konto,"</li>\n<li>"System- und Anwendungsdaten sowie entsprechende Einstellungen"</li>\n<li>"und heruntergeladene Anwendungen."</li>\n"Folgendes wird nicht gelöscht:"\n<li>"Aktuelle Systemsoftware und gebündelte Anwendungen"</li>\n<li>"Auf einer SD-Karte gespeicherte Dateien wie Musik oder Fotos"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Hierdurch werden alle Daten aus dem "<b>"internen Speicher"</b>" Ihres Telefons gelöscht, einschließlich"\n\n<li>"der System- und Anwendungsdaten und -einstellungen Ihres Google-Kontos"</li>\n<li></li>\n<li>"heruntergeladener Anwendungen"</li>\n\n"Um sämtliche Daten auf diesem Telefon zu löschen, müssen Sie den "<b>"USB-Speicher"</b>" löschen."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Hierdurch werden alle Daten aus dem "<b>"internen Speicher"</b>" Ihres Telefons gelöscht, einschließlich"\n\n<li>"der System- und Anwendungsdaten und -einstellungen Ihres Google-Kontos"</li>\n<li></li>\n<li>"heruntergeladener Anwendungen"</li>\n\n"Um auch Musik, Bilder und sonstige Nutzerdaten zu löschen, müssen Sie die "<b>"SD-Karte"</b>" löschen."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"USB-Speicher löschen"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"SD-Karte löschen"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Löscht alle Daten, z. B. Musik und Fotos, aus dem int. USB-Speicher des Telefons"</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Alle Daten, z. B. Musik und Fotos, von der SD-Karte löschen"</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Telefon zurücksetzen"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Alle persönlichen Daten und heruntergeladenen Anwendungen löschen? Diese Aktion kann nicht rückgängig gemacht werden."</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Alles löschen"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Bitte zeichnen Sie Ihr Entsperrungsmuster."</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Sie müssen Ihr Entsperrungsmuster eingeben, um das Zurücksetzen des Telefons zu bestätigen."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Die Zurücksetzung konnte nicht durchgeführt werden, da der Service zur Systembereinigung nicht verfügbar ist."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"SD-Karte formatieren"</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Löscht alle Daten auf der SD-Karte"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Durch diese Aktion wird die SD-Karte im Telefon gelöscht. Sie verlieren dann ALLE Daten auf der Karte!"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"SD-Karte formatieren"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"SD-Karte formatieren und alle Medien löschen? Die Aktion kann nicht rückgängig gemacht werden!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"USB-Speicher löschen"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"SD-Karte löschen"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Löscht alles im USB-Speicher."</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Löscht alle Daten auf der SD-Karte"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Hierdurch wird der USB-Speicher gelöscht. "<b>"Alle"</b>" darin befindlichen Daten gehen dann verloren!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Durch diese Aktion wird die SD-Karte gelöscht. "<b>"Alle"</b>" Daten auf der Karte gehen dann verloren!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"USB-Speicher löschen"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"SD-Karte löschen"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"USB-Speicher und alle darauf gespeicherten Dateien löschen? Diese Aktion kann nicht rückgängig gemacht werden!"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"SD-Karte und alle darauf gespeicherten Dateien löschen? Die Aktion kann nicht rückgängig gemacht werden!"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Alles löschen"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Bitte zeichnen Sie Ihr Entsperrungsmuster."</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Sie müssen Ihr Entsperrungsmuster eingeben, um eine SD-Karten-Formatierung zu bestätigen."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Sie müssen Ihr Entsperrungsmuster zeichnen, um die Löschung des USB-Speichers zu bestätigen."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Sie müssen Ihr Entsperrungsmuster zeichnen, um das Löschen der SD-Karte zu bestätigen."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Anrufeinstellungen"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Mailbox, Rufweiterleitung, Anklopfen, Anruferkennung einrichten"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Tethering"</string>
@@ -602,14 +642,14 @@
     <string name="usb_tethering_unavailable_subtext" msgid="1044622421184007254">"Keine USB-Verbindung"</string>
     <string name="usb_tethering_errored_subtext" msgid="1377574819427841992">"USB-Tethering-Fehler"</string>
     <string name="tethering_help_button_text" msgid="656117495547173630">"Hilfe"</string>
-    <string name="network_settings_title" msgid="7967552516440151852">"Mobile Netzwerke"</string>
+    <string name="network_settings_title" msgid="7967552516440151852">"Mobilfunknetze"</string>
     <string name="network_settings_summary" msgid="5149750850846813553">"Optionen für Roaming, Netzwerke, APNs festlegen"</string>
     <string name="location_title" msgid="1029961368397484576">"Mein Standort"</string>
     <string name="location_network_based" msgid="8815705866861993344">"Drahtlosnetzwerke"</string>
     <string name="location_networks_disabled" msgid="2708968452901433980">"Standort über Drahtlosnetzwerke bestimmen (z. B. in Google Maps)"</string>
-    <string name="location_neighborhood_level" msgid="4656658097932515921">"Standort bestimmt von WLAN und/oder mobilen Netzwerken"</string>
+    <string name="location_neighborhood_level" msgid="4656658097932515921">"Standort bestimmt von WLAN und/oder Mobilfunknetzen"</string>
     <string name="location_gps" msgid="6296125378829097831">"GPS-Satelliten"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Auf Straßenebene lokalisieren (deaktivieren, um Akku zu sparen)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Genau auf Straßenebene lokalisieren"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Auf Straßenebene lokalisieren (höherer Akkuverbrauch, im Freien)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Unterstütztes GPS verwenden"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Server zur Unterstützung von GPS verwenden (zur Verringerung der Netzwerkauslastung nicht auswählen)"</string>
@@ -629,7 +669,7 @@
     <string name="settings_safetylegal_title" msgid="1289483965535937431">"Sicherheitsinformationen"</string>
     <string name="settings_safetylegal_activity_title" msgid="6901214628496951727">"Sicherheitsinformationen"</string>
     <string name="settings_safetylegal_activity_unreachable" msgid="3198912875259612887">"Ihr Telefon ist mit keinem Datendienst verbunden. Um diese Informationen jetzt anzuzeigen, rufen Sie %s von einem beliebigen, mit dem Internet verbundenen Computer auf."</string>
-    <string name="settings_safetylegal_activity_loading" msgid="8059022597639516348">"Ladevorgang läuft..."</string>
+    <string name="settings_safetylegal_activity_loading" msgid="8059022597639516348">"Wird geladen..."</string>
     <string name="lockpassword_choose_your_password_header" msgid="8624900666929394990">"Passwort auswählen"</string>
     <string name="lockpassword_choose_your_pin_header" msgid="7598849519816138302">"PIN auswählen"</string>
     <string name="lockpassword_confirm_your_password_header" msgid="6308478184889846633">"Passwort bestätigen"</string>
@@ -670,7 +710,7 @@
     <string name="lock_title" msgid="4059246467204273930">"Sichern Ihres Telefons"</string>
     <string name="lock_intro_message" msgid="9100785646737118042"><font size="17">"Schützen Sie Ihr Telefon vor unerlaubter Verwendung, indem Sie ein persönliches Entsperrungsmuster erstellen. "\n<font height="17">\n</font><b>"1"</b>"  Auf dem nächsten Bildschirm sehen Sie, wie ein Beispielmuster gezeichnet wird. "\n<font height="17">\n</font><b>"2"</b>"  Anschließend können Sie Ihr eigenes Entsperrungsmuster zeichnen. Sie können verschiedene Muster ausprobieren, müssen jedoch immer mindestens vier Punkte miteinander verbinden. "\n<font height="17">\n</font><b>"3"</b>"  Zeichnen Sie Ihr Muster zur Bestätigung erneut. "\n<font height="17">\n</font><b>"Bereit? Wählen Sie “Weiter”"</b>". "\n<font height="3">\n</font>"Wählen Sie “Abbrechen”, wenn Sie Ihr Telefon nicht schützen möchten."</font></string>
     <string name="lock_example_title" msgid="8052305554017485410">"Beispielmuster"</string>
-    <string name="lock_example_message" msgid="1838650097090632706">"Verbinden Sie mindestens vier Punkte."\n" "\n"Wählen Sie “Weiter”, um ein eigenes Schema zu zeichnen."</string>
+    <string name="lock_example_message" msgid="1838650097090632706">"Verbinden Sie mindestens vier Punkte."\n" "\n"Wählen Sie “Weiter”, um ein eigenes Muster zu zeichnen."</string>
     <string name="manageapplications_settings_title" msgid="5712405848153426706">"Anwendungen verwalten"</string>
     <string name="manageapplications_settings_summary" msgid="6097117021500651232">"Installierte Anwendungen verwalten und entfernen"</string>
     <string name="applications_settings" msgid="3736173521008476946">"Anwendungen"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Anwendung"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Daten"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Deinstallieren"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Deaktivieren"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Aktivieren"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Daten löschen"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Updates deinstallieren"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Sie haben diese Anwendung für einige Aktionen als Standard festgelegt."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Kein Standard"</string>
-    <string name="clear_activities" msgid="7408923511535174430">"Standardeinstellung löschen"</string>
+    <string name="clear_activities" msgid="7408923511535174430">"Standardeinstellung zurücksetzen"</string>
     <string name="unknown" msgid="1592123443519355854">"Unbekannt"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Sortieren"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Nach Namen sortieren"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Nach Größe sortieren"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Aktive Dienste anzeigen"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Prozesse im Cache anz."</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Speicherplatz verwalten"</string>
     <string name="filter" msgid="2018011724373033887">"Filter"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Filteroptionen auswählen"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Alle"</string>
-    <string name="filter_apps_third_party" msgid="7786348047690140979">"Heruntergeladen"</string>
-    <string name="filter_apps_running" msgid="7767071454371350486">"Wird ausgeführt"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"Auf SD-Karte"</string>
-    <string name="loading" msgid="3200408047793887917">"Wird geladen..."</string>
+    <string name="filter_apps_third_party" msgid="7786348047690140979">"Heruntergeladene"</string>
+    <string name="filter_apps_running" msgid="7767071454371350486">"Ausgeführte"</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"USB-Speicher"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"Auf SD-Karte"</string>
+    <string name="disabled" msgid="9206776641295849915">"Deaktiviert"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Keine Anwendungen"</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Interner Speicher"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USB-Speicher"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SD-Kartensp."</string>
     <string name="recompute_size" msgid="7722567982831691718">"Größe wird neu berechnet..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Löschen"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"All diese Anwendungsdaten werden dauerhaft gelöscht. Dazu zählen alle Dateien, Einstellungen, Konten, Datenbanken und so weiter."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"Version <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Verschieben"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Auf Telefon verschieben"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Auf SD-Karte verschieben"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"In USB-Speicher versch."</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Auf SD-Karte verschieben"</string>
     <string name="moving" msgid="6431016143218876491">"Verschieben"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Es ist nicht genügend Speicher vorhanden."</string>
     <string name="does_not_exist" msgid="837163572898468245">"Diese Anwendung existiert nicht."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"Der angegebene Installationsort ist nicht gültig."</string>
     <string name="system_package" msgid="1030561474413022831">"Systemupdates können nicht auf externen Datenträgern installiert werden."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Stoppen erzwingen"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Diese Anwendung wird sofort neu gestartet. Möchten Sie das Beenden wirklich erzwingen?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Das Anhalten einer Anwendung kann zu unerwünschtem Verhalten führen. Sind Sie sicher?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Anwendung verschieben"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Verschieben der Anwendung fehlgeschlagen. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Bevorzugter Installationspfad"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Bevorzugten Installationspfad für neue Anwendungen ändern"</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Speichernutzung"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Von Anwendungen verwendeten Speicher anzeigen"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Aktive Dienste"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Derzeit ausgeführte Dienste anzeigen und steuern"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Neustart wird durchgeführt."</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Es werden keine Dienste ausgeführt."</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Dienst beenden?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"Der Dienst muss neu gestartet werden. Dies kann unerwünschte Auswirkungen auf die Anwendung \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" haben."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Beenden"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Abbrechen"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Gestartet: Zum Beenden berühren"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: Zum Verwalten berühren"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Verfügbar: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> in <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Sonstige: <xliff:g id="MEMORY">%2$s</xliff:g> in <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Prozess: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Hintergrundprozess im Cache"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Nichts wird ausgeführt."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Von der Anwendung gestartet."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> frei"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> verw."</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> Prozess und <xliff:g id="NUMSERVICES">%2$d</xliff:g> Dienst"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> Prozess und <xliff:g id="NUMSERVICES">%2$d</xliff:g> Dienste"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> Prozesse und <xliff:g id="NUMSERVICES">%2$d</xliff:g> Dienst"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> Prozesse und <xliff:g id="NUMSERVICES">%2$d</xliff:g> Dienste"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Laufende Anwendung"</string>
+    <string name="no_services" msgid="7133900764462288263">"Nicht aktiv"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Dienste"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Prozesse"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Beenden"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Einstellungen"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Dieser Dienst wurde von seiner Anwendung gestartet. Wird er beendet, kann die Anwendung eventuell nicht mehr ausgeführt werden."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Diese Anwendung kann nicht sicher beendet werden. Beim Beenden könnten aktuelle Daten verloren gehen."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Hierbei handelt es sich um einen alten Anwendungsprozess, der zur Erzielung einer besseren Geschwindigkeit für den Fall, dass er benötigt wird, beibehalten wird. Normalerweise gibt es keinen Grund, warum er beendet werden sollte."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: wird derzeit verwendet. Berühren Sie zum Steuern die Einstellungen."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Hauptprozess, der verwendet wird."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Dienst <xliff:g id="COMP_NAME">%1$s</xliff:g> wird verwendet."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Anbieter <xliff:g id="COMP_NAME">%1$s</xliff:g> wird verwendet."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Systemdienst beenden?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Möchten Sie diesen Systemdienst wirklich beenden? Möglicherweise funktionieren dann einige Funktionen Ihres Telefons nicht mehr richtig, bis Sie es aus- und wieder einschalten."</string>
     <string name="language_settings" msgid="502219872342167227">"Sprache &amp; Tastatur"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Einstellungen für Sprache &amp; Tastatur"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Optionen für Sprache und Region, Texteingabe und Autokorrektur festlegen"</string>
-    <string name="language_category" msgid="3391756582724541530">"Ländereinstellung"</string>
-    <string name="text_category" msgid="6342540511465136739">"Texteinstellungen"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Spracheinstellungen"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Tastatureinstellungen"</string>
     <string name="phone_language" msgid="1165758957501090679">"Sprache auswählen"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Autom. Ersetzung"</string>
@@ -770,19 +840,18 @@
     <string name="show_password" msgid="2198798062604049206">"Sichtbare Passwörter"</string>
     <string name="show_password_summary" msgid="3806709974395178121">"Passwort bei der Eingabe anzeigen"</string>
     <string name="ime_security_warning" msgid="812267421486877917">"Diese Eingabemethode kann den gesamten von Ihnen eingegebenen Text erfassen, einschließlich persönlicher Daten wie Passwörter und Kreditkartennummern. Sie ist Teil der Anwendung <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>. Möchten diese Eingabemethode verwenden?"</string>
-    <string name="user_dict_settings_titlebar" msgid="765659257455000490">"Wörterbuch des Nutzers"</string>
-    <string name="user_dict_settings_title" msgid="8357027437499042191">"Wörterbuch des Nutzers"</string>
+    <string name="user_dict_settings_titlebar" msgid="765659257455000490">"Mein Wörterbuch"</string>
+    <string name="user_dict_settings_title" msgid="8357027437499042191">"Mein Wörterbuch"</string>
     <string name="user_dict_settings_summary" msgid="7965571192902870454"></string>
     <string name="user_dict_settings_add_menu_title" msgid="4056762757149923551">"Hinzufügen"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4702613990174126482">"Ins Wörterbuch"</string>
     <string name="user_dict_settings_edit_dialog_title" msgid="8967476444840548674">"Wort bearbeiten"</string>
     <string name="user_dict_settings_context_menu_edit_title" msgid="2210564879320004837">"Bearbeiten"</string>
     <string name="user_dict_settings_context_menu_delete_title" msgid="9140703913776549054">"Löschen"</string>
-    <string name="user_dict_settings_empty_text" msgid="6209268025109242806">"Sie haben keine Wörter im Nutzerwörterbuch. Sie können über das Menü ein Wort hinzufügen."</string>
+    <string name="user_dict_settings_empty_text" msgid="6209268025109242806">"Keine Wörter im Ihrem Wörterbuch vorhanden. Sie können über das Menü ein Wort hinzufügen."</string>
     <string name="testing" msgid="6584352735303604146">"Test"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Telefoninformation"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Akkuinformationen"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Akkuprotokoll"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Schnellstart"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Tastenkombinationen zum Starten von Anwendungen festlegen"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Anwendung zuweisen"</string>
@@ -798,12 +867,12 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Optionen für Texteingabe verwalten"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"<xliff:g id="IME_NAME">%1$s</xliff:g>-Einstellungen"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Einstellungen der Bildschirmtastatur"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Tastatur des Geräts"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Einstellungen für eingebaute Tastatur"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Eingebaute Tastatur"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Einstellungen für eingebaute, physische Tastatur"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Entwicklung"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Optionen zur Anwendungsentwicklung festlegen"</string>
     <string name="enable_adb" msgid="7982306934419797485">"USB-Debugging"</string>
-    <string name="enable_adb_summary" msgid="4881186971746056635">"Debugmodus bei Anschluss eines USB-Geräts"</string>
+    <string name="enable_adb_summary" msgid="4881186971746056635">"Debugmodus bei Anschluss über USB"</string>
     <string name="keep_screen_on" msgid="1146389631208760344">"Aktiv lassen"</string>
     <string name="keep_screen_on_summary" msgid="2173114350754293009">"Display wird beim Laden nie in den Ruhezustand versetzt"</string>
     <string name="allow_mock_location" msgid="2787962564578664888">"Falsche Standorte"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"USB-Debugging ist nur für Entwicklungszwecke vorgesehen. Damit können Sie Daten zwischen Ihrem Computer und Ihrem Gerät kopieren, Anwendungen auf Ihrem Gerät ohne Benachrichtigung installieren und Protokolldaten lesen."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Gadget auswählen"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Widget auswählen"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Details für UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Netzwerk-Nutzungsdetails für <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Empfangene Bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Gesendete Bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Bytes insgesamt: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"CPU-Nutzungsdetails für <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Nutzerzeit:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Systemzeit:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Gesamtzeit:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Startet: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g> d <xliff:g id="HOURS">%2$d</xliff:g> h <xliff:g id="MINUTES">%3$d</xliff:g> m <xliff:g id="SECONDS">%4$d</xliff:g> s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g> h <xliff:g id="MINUTES">%2$d</xliff:g> m <xliff:g id="SECONDS">%3$d</xliff:g> s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g> m <xliff:g id="SECONDS">%2$d</xliff:g> s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g> s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Pakete, die diese UID teilen:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Keine Akku-Nutzungsdaten verfügbar"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Sensor:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Sperre im Teilwachzustand:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Sensor verwendet von Paketen:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"<xliff:g id="COUNT">%1$d</xliff:g> mal von <xliff:g id="PACKAGE">%2$s</xliff:g> verwendet"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"<xliff:g id="COUNT">%1$d</xliff:g> mal von einem der folgenden verwendet:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Wird ausgeführt"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Bildschirm aktiviert"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Telefon aktiviert"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Zeit ohne Schlafmodus:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Zeit mit Display eingeschaltet:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Zeit mit eingeschaltetem Telefon:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"Auf Akku:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Eingesteckt:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Nutzungsstatistik"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Nutzungsstatistik"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Sortieren nach:"</string>
@@ -865,12 +908,19 @@
     <string name="power_usage_summary" msgid="7237084831082848168">"Was zum Akkuverbrauch beiträgt"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Akkuverbrauch seit dem Ausstecken"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"Akkuverbrauch seit dem Zurücksetzen"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> mit Akku"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> seit dem Ausstecken"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Wird geladen"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Bildschirm an"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS aktiv"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"WLAN"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Aktiv"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Telefonsignal"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Aktivzeit des Geräts"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"WLAN-Aktivzeit"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"WLAN-Aktivzeit"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"WLAN-Aktivzeit"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"WLAN-Aktivzeit"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Akkuverbrauch - Details"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Details"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Telefon inaktiv"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"CPU insgesamt"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPU Vordergrund"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Aktiv lassen"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"WLAN aktiv"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Telefon"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Gesendete Daten"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Empfangene Daten"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Anwendungsinfo"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Anwendungseinstellungen"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Display-Einstellungen"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"WLAN-Einstellungen"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"WLAN-Einstellungen"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Bluetooth-Einstellungen"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Akkuverbrauch durch Anrufe"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Akkuverbrauch bei inaktivem Telefon"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Akkuverbrauch durch Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Bluetooth bei Nichtverwendung deaktivieren"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Mit einem anderen Bluetooth-Gerät verbinden"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Akkuverbrauch durch ausgeführte Anwendungen"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Akkuverbrauch durch Anwendung"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Anwendung beenden oder deinstallieren"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"GPS bei Nichtverwendung deaktivieren"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"GPS manuell steuern, damit Anwendung es nicht verwenden kann"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"Die Anwendung bietet unter Umständen Einstellungen für einen geringeren Akkuverbrauch."</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> seit dem Ausstecken"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Seit dem letzten Ausstecken für <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,16 +1013,18 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Nicht installiert"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Weiblich"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Männlich"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Sprachsynthese installiert"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Neue Engine aktivieren"</string>
     <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="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>
+    <string name="vpn_username_colon" msgid="7854930370861306247">"Name:"</string>
     <string name="vpn_password_colon" msgid="5716278710848606626">"Passwort:"</string>
     <string name="vpn_a_username" msgid="6664733641993968692">"ein Nutzername"</string>
     <string name="vpn_a_password" msgid="1537213632501483753">"ein Passwort"</string>
-    <string name="vpn_save_username" msgid="1408415289165970790">"Nutzername speichern"</string>
+    <string name="vpn_save_username" msgid="1408415289165970790">"Name speichern"</string>
     <string name="vpn_connect_button" msgid="1699007212602470655">"Verbinden"</string>
     <string name="vpn_yes_button" msgid="8034531001149843119">"Ja"</string>
     <string name="vpn_no_button" msgid="7620339571187119107">"Nein"</string>
@@ -1048,8 +1102,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Anwendungen können sichere Zertifikate &amp;amp; Anmeldeinform. abrufen"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Passwort eingeben"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Geben Sie das Passwort für den Anmeldeinformationsspeicher ein."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Von SD-Karte installieren"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Verschlüsselte Zertifikate von SD-Karte installieren"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Von USB-Speicher inst."</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Von SD-Karte installieren"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Verschl. Zertifikate von USB-Speicher inst."</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Verschlüsselte Zertifikate von SD-Karte installieren"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Passwort festlegen"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Passwort für Anmeldeinformationsspeicher festlegen oder ändern"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Speicherinhalt löschen"</string>
@@ -1069,6 +1125,16 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Der Anmeldeinformationsspeicher 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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Encrypted File System"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Private Nutzerdaten verschlüsseln"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Encrypted File System-Speicherung für private Nutzerdaten auf diesem Gerät aktivieren"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Für das Aktivieren von Encrypted File Systems müssen die Gerätedaten zurückgesetzt werden."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Für das Deaktivieren von Encrypted File Systems müssen die Gerätedaten zurückgesetzt werden."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Aktivieren"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Deaktivieren"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Abbrechen"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Encrypted File Systems-Modusänderung abgebrochen"</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Encrypted File Systems-Warnung"</string>
     <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>
@@ -1076,11 +1142,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Sicherung und Wiederherstellung"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Persönliche Daten"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Meine Daten sichern"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Meine Einstellungen und andere Anwendungsdaten sichern"</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Anwendungsdaten, WLAN-Passwörter und andere Einstellungen auf Google-Servern sichern"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Autom. Wiederherst."</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Einstellungen oder andere Daten wiederherstellen, wenn ich eine Anwendung neu installiere"</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Gesicherte Einstellungen oder andere Daten wiederherstellen, wenn ich eine Anwendung neu installiere"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Sicherung"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Möchten Sie wirklich die Sicherung Ihrer Einstellungen beenden und alle Kopien auf den Google-Servern löschen?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Möchten Sie wirklich die Sicherung Ihrer WLAN-Passwörter, Lesezeichen und anderen Einstellungen und Anwendungsdaten beenden und alle Kopien auf den Google-Servern löschen?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Einstellungen für die Geräteverwaltung"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Geräteadministrator"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Deaktivieren"</string>
diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml
index 5ffc387..4e8d75a 100644
--- a/res/values-el/arrays.xml
+++ b/res/values-el/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Ποτέ όταν είναι συνδεδεμένο"</item>
     <item msgid="1986753720941888596">"Ποτέ"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"Χρήση CPU"</item>
-    <item msgid="6401018715947316517">"Χρήση δικτύου"</item>
-    <item msgid="188092590354892392">"Χρήση GPS"</item>
-    <item msgid="8414109131222049141">"Χρήση αισθητήρα"</item>
-    <item msgid="1327904325081257093">"μερική χρήση αφύπνισης"</item>
-    <item msgid="4832254146664706277">"Άλλη χρήση"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Από την τελευταία φορά που αποσυνδέθηκε"</item>
-    <item msgid="166936313535197598">"Συνολικά από την εκκίνηση"</item>
-    <item msgid="4793941382744963893">"Συνολικά για όλο το χρονικό διάστημα"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Χρόνος χρήσης"</item>
     <item msgid="1908750532762193304">"Εκκίνηση καταμέτρησης"</item>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 4d8a769..bf3794a 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"αρχ."</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Αφαίρεση κάρτας SD"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Διαμόρφωση κάρτας SD"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Αποπροσ. αποθ. χώρου USB"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Αφαίρεση κάρτας SD"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Διαγρ. αποθ. χώρου USB"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Διαγραφή κάρτας SD"</string>
     <string name="small_font" msgid="2295331917424072635">"Μικρό"</string>
     <string name="medium_font" msgid="2068475425515133701">"Μέτριο"</string>
     <string name="large_font" msgid="599055175160971446">"Μεγάλο"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"Κάρτα SD"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Αποθ. χώρος USB"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Κάρτα SD"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Κατάσταση μπαταρίας:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Τροφοδοσία ρεύματος:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Κλίμακα μπαταρίας:"</string>
@@ -178,29 +181,36 @@
     <string name="band_mode_failed" msgid="1495968863884716379">"Ανεπιτυχής"</string>
     <string name="band_mode_succeeded" msgid="2701016190055887575">"Επιτυχής"</string>
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Οι αλλαγές θα πραγματοποιηθούν όταν πραγματοποιηθεί επανασύνδεση του καλωδίου USB"</string>
-    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Ενεργοποίηση μέσου μαζικής αποθήκευσης USB"</string>
+    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Ενεργοποίηση χώρου μαζικής αποθήκευσης USB"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Συνολικός αριθμός byte:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Δεν υπάρχει κάρτα SD"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"Μη προσαρτ. αποθηκ. χώρος USB"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Δεν υπάρχει κάρτα SD"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Διαθέσιμος αριθμός bytes:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"Η κάρτα SD χρησιμοποιείται ως συσκευή μαζικής αποθήκευσης"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"Μπορείτε να αφαιρέσετε την κάρτα SD με ασφάλεια"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"Η κάρτα SD αφαιρέθηκε ενώ βρισκόταν σε χρήση!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"Χρ. απ. χώρ. USB για μαζ. απ."</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"Η κάρτα SD χρησιμοποιείται ως συσκευή μαζικής αποθήκευσης"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"Κατάργ. αποθ. χώρ. USB με ασφ."</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"Μπορείτε να αφαιρέσετε την κάρτα SD με ασφάλεια"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"Κατάργ. απ. χώρ. USB σε χρήση!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"Η κάρτα SD αφαιρέθηκε ενώ βρισκόταν σε χρήση!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Αριθμός bytes που χρησιμοποιήθηκαν:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Σάρωση κάρτας SD για πολυμέσα..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"Η κάρτα SD που προσαρτήθηκε είναι μόνο για ανάγνωση"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Σάρ. αποθ. χώρ. USB για πολυμ."</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Σάρωση κάρτας SD για πολυμέσα..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"Προσ. αποθ. χώρ. USB για ανάγ."</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"Η κάρτα SD που προσαρτήθηκε είναι μόνο για ανάγνωση"</string>
     <string name="next_label" msgid="4693520878012668114">"Επόμενο"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Τοπικές ρυθμίσεις"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Επιλέξτε γλώσσα"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Επιλογή δραστηριότητας"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Πληροφορίες συσκευής"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Πληροφορίες μπαταρίας"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Ιστορικό μπαταρίας"</string>
     <string name="display_label" msgid="7403874003169865762">"Προβολή"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Πληροφορίες τηλεφώνου"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"Κάρτα SD"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"Αποθ. χώρος USB"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"Κάρτα SD"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Ρυθμίσεις διακομιστή μεσολάβησης"</string>
     <string name="cancel" msgid="6859253417269739139">"Ακύρωση"</string>
     <string name="settings_label" msgid="1626402585530130914">"Ρυθμίσεις"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Ρυθμίσεις"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Ρυθμίσεις"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Λειτουργία πτήσης"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Απενεργοποίηση όλων των ασύρματων συνδέσεων"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Ως τηλέφωνο ανοιχτής συνομιλίας"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Για μουσική και πολυμέσα"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Διατήρηση ρυθμίσεων"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Κάντε χρήση της Επικοινωνίας κοντινού πεδίου για την ανάγνωση και ανταλλαγή ετικετών"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Ενεργοποίηση Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Ρυθμίσεις Wi-Fi"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Ορισμός εναλλαγής από δεδομένα Wi-Fi σε δεδομένα κινητού"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Παρουσιάστηκε ένα πρόβλημα κατά τη ρύθμιση της πολιτικής κατάστασης αδράνειας."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"Διεύθυνση MAC"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"Διεύθυνση IP"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"Ρυθμίσεις IP"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Αποθ/ση"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Ακύρωση"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Κατάσταση"</string>
     <string name="device_status" msgid="607405385799807324">"Κατάσταση"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Τηλεφωνικός αριθμός, σήμα κ.λπ."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"Κάρτα SD &amp; αποθηκευτικός χώρος τηλεφώνου"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Ρυθμίσεις κάρτας SD &amp; αποθηκευτικού χώρου τηλεφώνου"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Αφαίρεση κάρτας SD, προβολή διαθέσιμου αποθηκευτικού χώρου"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Αποθηκευτικός χώρος"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Ρυθμίσεις αποθηκευτικού χώρου"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Αποπροσάρτηση αποθηκευτικού χώρου USB, προβολή διαθέσιμου αποθηκευτικού χώρου"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Αφαίρεση κάρτας SD, προβολή διαθέσιμου αποθηκευτικού χώρου"</string>
     <string name="status_number" msgid="5123197324870153205">"Ο τηλεφωνικός αριθμός μου"</string>
     <string name="status_min_number" msgid="3519504522179420597">"ΛΕΠΤΟ"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"Έκδοση PRL"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Μη διαθέσιμο"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Χρόνος από την τελευταία εκκίνηση"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Χρόνος αφύπνισης"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Εσωτερικός αποθηκευτικός χώρος τηλεφώνου"</string>
-    <string name="sd_memory" msgid="151871913888051515">"Κάρτα SD"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Εσωτερικός αποθηκευτικός χώρος"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"Αποθ. χώρος USB"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"Κάρτα SD"</string>
     <string name="memory_available" msgid="418542433817289474">"Διαθέσιμος χώρος"</string>
     <string name="memory_size" msgid="6629067715017232195">"Συνολικός χώρος"</string>
-    <string name="sd_eject" msgid="6915293408836853020">"Αφαίρεση κάρτας SD"</string>
-    <string name="sd_eject_summary" msgid="3315557796211542962">"Αποπροσαρτήστε την κάρτα SD για ασφαλή αφαίρεση"</string>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Εισαγάγετε μια κάρτα SD για τοποθέτηση"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Τοποθέτηση κάρτας SD"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Τοποθέτηση κάρτας SD"</string>
-    <string name="sd_format" msgid="5448738337382712203">"Διαμόρφωση κάρτας SD"</string>
-    <string name="sd_format_summary" msgid="6616491027883134004">"Διαμόρφωση (διαγραφή) της κάρτας SD"</string>
+    <string name="sd_eject" product="default" msgid="6915293408836853020">"Αφαίρεση κάρτας SD"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Αποπροσ. εσωτ. χώρο αποθ. USB"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Αποπροσαρτήστε την κάρτα SD για να την αφαιρέσετε με ασφάλεια"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Εισ. απ. χώρ. USB για προσ."</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Εισαγάγετε μια κάρτα SD για τοποθέτηση"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Προσάρτ. κοιν. αποθ. χώρ."</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Τοποθέτηση κάρτας SD"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Προσαρ. τον εσ. αποθ. χώρο USB"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Τοποθέτηση κάρτας SD"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Διαγρ. αποθ. χώρου USB"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Διαγραφή κάρτας SD"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Διαγρ. δεδ. εσωτ. απ. χώρ. USB"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Διαγράφει όλα τα δεδομένα που υπάρχουν στην κάρτα SD του τηλεφώνου σας, όπως αρχεία μουσικής και φωτογραφίες"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Μη διαθέσιμο"</string>
     <string name="read_only" msgid="6702420168629076340">" (Μόνο για ανάγνωση)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Αφαίρεση κάρτας SD"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Εάν αφαιρέσετε την κάρτα SD, ορισμένες από τις εφαρμογές που χρησιμοποιείτε θα σταματήσουν και ενδέχεται να μην είναι διαθέσιμες μέχρι να την τοποθετήσετε ξανά."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Η αφαίρεση της κάρτας SD απέτυχε"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"Δεν είναι δυνατή η αφαίρεση της κάρτας SD. Προσπαθήστε ξανά αργότερα."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"Η κάρτα SD θα αφαιρεθεί. Ελέγξτε την περιοχή ειδοποιήσεων για πληροφορίες κατάστασης."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Αποπροσ. αποθ. χώρου USB"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Αφαίρεση κάρτας SD"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Εάν αποπροσαρτήσετε τον αποθηκευτικό χώρο USB, ορισμένες από τις εφαρμογές που χρησιμοποιείτε θα σταματήσουν και ενδέχεται να μην είναι διαθέσιμες μέχρι να τον τοποθετήσετε ξανά."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Εάν αφαιρέσετε την κάρτα SD, ορισμένες από τις εφαρμογές που χρησιμοποιείτε θα σταματήσουν και ενδέχεται να μην είναι διαθέσιμες μέχρι να την τοποθετήσετε ξανά."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Αποτ. αποπροσ. αποθ. χώρου USB"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Η αφαίρεση της κάρτας SD απέτυχε"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"Αδυναμία αποπροσάρτησης αποθηκευτικού χώρου USB. Δοκιμάστε ξανά αργότερα."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"Δεν είναι δυνατή η αφαίρεση της κάρτας SD. Προσπαθήστε ξανά αργότερα."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"Θα γίνει αποπροσάρτηση του αποθηκευτικού χώρου USB."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"Θα γίνει αποπροσάρτηση της κάρτας SD."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Αφαίρεση"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Αφαίρεση σε εξέλιξη"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Κατάσταση μπαταρίας"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Η επαναφορά των εργοστασιακών ρυθμίσεων APN ολοκληρώθηκε"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Επαναφορά εργοστασιακών δεδομένων"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Διαγραφή όλων των δεδομένων στο τηλέφωνο"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Αυτή η ενέργεια θα διαγράψει όλα τα δεδομένα από το τηλέφωνό σας, συμπεριλαμβανομένων:"\n<li>"του Λογαριασμού Google"</li>\n<li>"των δεδομένων και εφαρμογών συστήματος και εφαρμογών"</li>\n<li>"των εφαρμογών από λήψη"</li>\n"Δεν θα διαγράψει:"\n<li>"το τρέχον λογισμικό και τις ομαδοποιημένες εφαρμογές συστήματος"</li>\n<li>"τα αρχεία κάρτας SD, όπως μουσική ή φωτογραφίες"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Θα διαγραφούν όλα τα δεδομένα από τον "<b>"εσωτερικό χώρο αποθήκευσης"</b>" του τηλεφώνου σας, συμπεριλαμβανομένων:"\n\n<li>"Του Λογαριασμού σας Google"</li>\n<li>"Των ρυθμίσεων και των δεδομένων συστήματος και εφαρμογής"</li>\n<li>"Των εφαρμογών που έχουν ληφθεί"</li>\n\n"Για να γίνει εκκαθάριση όλων των δεδομένων αυτού του τηλεφώνου, θα πρέπει να γίνει διαγραφή του "<b>"αποθηκευτικού χώρου USB"</b>"."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Θα διαγραφούν όλα τα δεδομένα σας από τον "<b>"εσωτερικό χώρο αποθήκευσης"</b>", συμπεριλαμβανομένων:"\n\n<li>"Του Λογαριασμού σας Google"</li>\n<li>"Των ρυθμίσεων και των δεδομένων συστήματος και εφαρμογής"</li>\n<li>"Των εφαρμογών που έχουν ληφθεί"</li>\n\n"Η "<b>"κάρτα SD"</b>" πρέπει, επίσης, να διαγραφεί για την εκκαθάριση των αρχείων μουσικής, των εικόνων και άλλων δεδομένων του χρήστη."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Διαγρ. αποθ. χώρου USB"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Διαγραφή κάρτας SD"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Διαγράψτε όλα τα δεδομένα που υπάρχουν στον εσωτερικό αποθηκευτικό χώρο του τηλεφώνου σας, όπως αρχεία μουσικής και φωτογραφίες."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Διαγράψτε όλα τα δεδομένα που υπάρχουν στην κάρτα SD του τηλεφώνου σας, όπως αρχεία μουσικής και φωτογραφίες."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Επαναφορά τηλεφώνου"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Να πραγματοποιηθεί διαγραφή όλων των προσωπικών στοιχείων και τυχόν εφαρμογών από λήψη; Αυτή η ενέργεια δεν είναι αναστρέψιμη!"</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Διαγραφή όλων"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Σχεδιάστε το μοτίβο ξεκλειδώματος"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Πρέπει να σχεδιάσετε το μοτίβο ξεκλειδώματος για επιβεβαίωση επαναφοράς τηλεφώνου."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Δεν πραγματοποιήθηκε επαναφορά επειδή η υπηρεσία Εκκαθάρισης συστήματος δεν είναι διαθέσιμη."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Διαμόρφωση κάρτας SD."</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Διαγραφή όλων των δεδομένων στην κάρτα SD"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Αυτή η ενέργεια θα διαγράψει την κάρτα SD στο τηλέφωνο. Θα χάσετε όλα τα δεδομένα στην κάρτα!"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Διαμόρφωση κάρτας SD"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Να γίνει διαμόρφωση της κάρτας SD, η οποία θα διαγράψει όλα τα πολυμέσα σας; Η ενέργεια είναι μη αναστρέψιμη!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Διαγρ. αποθ. χώρου USB"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Διαγραφή κάρτας SD"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Διαγρ. δεδομ. αποθ. χώρου USB"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Διαγραφή όλων των δεδομένων στην κάρτα SD"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Με αυτή την ενέργεια ο χώρος αποθήκευσης USB θα διαγραφεί. Θα χάσετε "<b>"όλα"</b>" τα δεδομένα που έχετε αποθηκεύσει εκεί!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Αυτή η ενέργεια θα διαγράψει την κάρτα SD. Θα χάσετε "<b>"όλα"</b>" τα δεδομένα που έχετε στην κάρτα!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Διαγρ. αποθ. χώρου USB"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Διαγραφή κάρτας SD"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"Να γίνει διαγραφή του αποθηκευτικού χώρου USB, η οποία θα διαγράψει όλα τα αρχεία που έχετε αποθηκεύσει εκεί; Η ενέργεια είναι μη αναστρέψιμη!"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"Να γίνει διαγραφή της κάρτας SD, με την οποία θα διαγραφούν όλα τα αρχεία που έχετε αποθηκεύσει εκεί; Η ενέργεια είναι μη αναστρέψιμη!"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Διαγραφή όλων"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Σχεδιάστε το μοτίβο ξεκλειδώματος"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Πρέπει να σχεδιάσετε το μοτίβο ξεκλειδώματος για επιβεβαίωση διαμόρφωσης μιας κάρτας SD."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Πρέπει να σχεδιάσετε το μοτίβο ξεκλειδώματος για να επιβεβαιώσετε ότι θέλετε να κάνετε διαγραφή του αποθηκευτικού χώρου USB."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Πρέπει να σχεδιάσετε το μοτίβο ξεκλειδώματος για να επιβεβαιώσετε ότι θέλετε να κάνετε διαγραφή της κάρτας SD."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Ρυθμίσεις κλήσης"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Ορισμ.αυτόμ.τηλεφ., προώθ.κλήσης, αναμ.κλήσης, αναγν.κλήσ."</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Tethering"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Προβ.τοποθ.σε εφαρμ.(όπως π.χ. στους Χάρτες) με χρήση ασύρ.δικτ."</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Η τοποθ.προσδ.από δίκτ.Wi-Fi και/ή δίκτ.κινητ.τηλεφ."</string>
     <string name="location_gps" msgid="6296125378829097831">"Χρήση δορυφόρων GPS"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Κατά την εύρεση τοποθεσίας, η ακρίβεια είναι σε επίπεδο δρόμου (αποεπιλογή για εξοικονόμηση μπαταρίας)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Κατά την εύρεση τοποθεσίας, η ακρίβεια είναι σε επίπεδο δρόμου"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Εντοπ.σε επίπ.δρόμου (απαιτ.μεγ.καταν.μπαταρ.και μετάβ.σε ανοικτό χώρο)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Χρήση υποβοηθούμενου GPS"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Χρήση διακομιστή για βοήθεια GPS (αποεπιλογή για να μειώσετε τη χρήση του δικτύου)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Εφαρμογή"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Δεδομένα"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Κατάργηση εγκατάστασης"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Απενεργοποίηση"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Ενεργοποίηση"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Εκκαθάριση δεδομένων"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Κατάργηση εγκατάστασης ενημερώσεων"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Επιλέξατε την εκτέλεση αυτής της εφαρμογής από προεπιλογή για ορισμένες ενέργειες."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Δεν έχουν οριστεί προεπιλογές."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Εκκαθάριση προεπιλογών"</string>
     <string name="unknown" msgid="1592123443519355854">"Άγνωστο"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Ταξινόμηση"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Ταξινόμηση κατά όνομα"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Ταξινόμηση με βάση μέγεθος"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Εμφ. υπ. που εκτελούνται"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Εμφ. διαδ. προσωρ. μνήμης"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Διαχείριση χώρου"</string>
     <string name="filter" msgid="2018011724373033887">"Φίλτρο"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Επιλογές φίλτρου"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Όλα"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Η λήψη ολοκληρώθηκε"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"Εκτελείται"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"Στην κάρτα SD"</string>
-    <string name="loading" msgid="3200408047793887917">"Φόρτωση..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"Αποθ. χώρος USB"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"Στην κάρτα SD"</string>
+    <string name="disabled" msgid="9206776641295849915">"Απενεργοποιημένο"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Δεν υπάρχουν εφαρμογές."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Εσ. αποθ. χώρος"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"Αποθ. χώρος USB"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"Κάρ. χώρ. απ. SD"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Εκ νέου υπολογισμός μεγέθους..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Διαγραφή"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Όλα τα δεδομένα της εφαρμογής θα διαγραφούν μόνιμα. Αυτό περιλαμβάνει όλα τα αρχεία, τις ρυθμίσεις, τους λογαριασμούς, τις βάσεις δεδομένων και τα λοιπά."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"έκδοση <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Μετακίνηση"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Μετακίνηση στο τηλέφωνο"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Μετακίνηση στην κάρτα SD"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Μετακ. σε αποθ. χώρο USB"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Μετακίνηση στην κάρτα SD"</string>
     <string name="moving" msgid="6431016143218876491">"Μετακίνηση"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Ο διαθέσιμος χώρος αποθήκευσης δεν επαρκεί."</string>
     <string name="does_not_exist" msgid="837163572898468245">"Η εφαρμογή δεν υπάρχει."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"Η καθορισμένη τοποθεσία εγκατάστασης δεν είναι έγκυρη."</string>
     <string name="system_package" msgid="1030561474413022831">"Δεν είναι δυνατή η αποθήκευση των ενημερώσεων συστήματος σε εξωτερικά μέσα."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Αναγκαστική διακοπή"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Θα γίνει αμέσως επανεκκίνηση αυτής της εφαρμογής. Είστε βέβαιοι ότι θέλετε να γίνει διακοπή;"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Η αναγκαστική διακοπή μιας εφαρμογής μπορεί να προκαλέσει πρόβλημα στη λειτουργία της. Είστε σίγουροι;"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Μετακίνηση εφαρμογής"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Η μετακίνηση της εφαρμογής απέτυχε. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Προτιμώμενη θέση εγκατάστασης"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Αλλαγή της προτιμώμενης θέσης εγκατάστασης για νέες εφαρμογές."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Αποθηκευτικός χώρος"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Προβολή του χώρου αποθήκευσης που χρησιμοποιούν οι εφαρμογές"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Υπηρεσίες που εκτελούνται"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Προβολή και έλεγχος των εφαρμογών που εκτελούνται αυτή τη στιγμή"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Γίνεται επανεκκίνηση"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Δεν εκτελούνται υπηρεσίες"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Διακοπή υπηρεσίας;"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"Η υπηρεσία δεν θα εκτελείται έως ότου επανεκκινηθεί. Αυτό ενδέχεται να έχει μη επιθυμητά αποτελέσματα στην εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Διακοπή"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Άκυρο"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Έγινε εκκίνηση από εφαρμογή: άγγιγμα για παύση"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: αγγίξτε για διαχείριση"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Διαθ.: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> στα <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Άλλο: <xliff:g id="MEMORY">%2$s</xliff:g> στα <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Διεργασία: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Διαδικασία προσωρινά αποθηκευμένου φόντου"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Τίποτα σε εξέλιξη."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Έναρξη από την εφαρμογή."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> δωρ."</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> μετ."</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> διεργασία και <xliff:g id="NUMSERVICES">%2$d</xliff:g> υπηρεσία"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> διεργασία και <xliff:g id="NUMSERVICES">%2$d</xliff:g> υπηρεσίες"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> διεργασίες και <xliff:g id="NUMSERVICES">%2$d</xliff:g> υπηρεσία"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> διεργασίες και <xliff:g id="NUMSERVICES">%2$d</xliff:g> υπηρεσίες"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Εκτέλεση εφαρμογής"</string>
+    <string name="no_services" msgid="7133900764462288263">"Ανενεργό"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Υπηρεσίες"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Διεργασίες"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Διακοπή"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Ρυθμίσεις"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Αυτή η υπηρεσία εκκινήθηκε από αυτή την εφαρμογή. Η διακοπή της μπορεί να προκαλέσει αποτυχία της εφαρμογής."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Αυτή η εφαρμογή δεν μπορεί να διακοπεί με ασφάλεια. Αν το κάνετε, μπορεί να χάσετε την τρέχουσα εργασία σας."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Πρόκειται για μια παλιά διαδικασία εφαρμογής η οποία διατηρείται για καλύτερη ταχύτητα σε περίπτωση που χρειαστεί ξανά. Συνήθως δεν υπάρχει λόγος διακοπής της."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: χρησιμοποιείται. Πατήστε την επιλογή \"Ρυθμίσεις\" για έλεγχο."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Κύρια διεργασία σε χρήση."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Η υπηρεσία <xliff:g id="COMP_NAME">%1$s</xliff:g> χρησιμοποιείται."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Ο πάροχος <xliff:g id="COMP_NAME">%1$s</xliff:g> χρησιμοποιείται."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Διακοπή υπηρεσίας συστήματος;"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Είστε ακόμα σίγουροι ότι θέλετε να διακόψετε αυτή την υπηρεσία συστήματος; Αν ναι, κάποιες λειτουργίες του τηλεφώνου σας ενδέχεται να σταματήσουν να λειτουργούν σωστά μέχρι να απενεργοποιήσετε και να ενεργοποιήσετε ξανά την υπηρεσία."</string>
     <string name="language_settings" msgid="502219872342167227">"Γλώσσα και πληκτρολόγιο"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Ρυθμίσεις γλώσσας και πληκτρολογίου"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Ορισμ.τοπ.ρυθμ.(γλώσσα και περιοχή), είσ.κειμ.και επιλ.αυτόμ.διόρθ."</string>
-    <string name="language_category" msgid="3391756582724541530">"Τοπικές ρυθμίσεις"</string>
-    <string name="text_category" msgid="6342540511465136739">"Ρυθμίσεις κειμένου"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Ρυθμίσεις γλώσσας"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Ρυθμίσεις πληκτρολογίου"</string>
     <string name="phone_language" msgid="1165758957501090679">"Επιλογή γλώσσας"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Αυτόματη αντικατάσταση"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Δοκιμή"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Πληροφορίες τηλεφώνου"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Πληροφορίες μπαταρίας"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Ιστορικό μπαταρίας"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Γρήγορη εκκίνηση"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Ορισμός συντομεύσεων πληκτρολογίου για την εκκίνηση εφαρμογών"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Ορισμός εφαρμογής"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Διαχείριση επιλογών εισόδου κειμένου"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Ρυθμίσεις <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Ρυθμίσεις πληκτρολογίου οθόνης"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Πληκτρολόγιο συσκευής"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Ενσωματωμένες ρυθμίσεις πληκτρολογίου"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Ενσωματωμένο πληκτρολόγιο"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Ρυθμίσεις ενσωματωμένου κανονικού πληκτρολογίου"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Ανάπτυξη"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Ορισμός επιλογών για ανάπτυξη εφαρμογής"</string>
     <string name="enable_adb" msgid="7982306934419797485">"Εντοπισμός σφαλμάτων USB"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"Ο εντοπισμός σφαλμάτων USB προορίζεται μόνο για σκοπούς προγραμματισμού. Μπορεί να χρησιμοποιηθεί για αντιγραφή δεδομένων μεταξύ του υπολογιστή και της συσκευής σας, για την εγκατάσταση εφαρμογών στη συσκευή σας χωρίς προειδοποίηση και για την ανάγνωση δεδομένων καταγραφής."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Επιλογή gadget"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Επιλογή γραφικού στοιχείου"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Λεπτομέρειες για UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Λεπτομέρειες χρήσης δικτύου για <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Αριθμός byte που ελήφθησαν: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Αριθμός byte που απεστάλησαν: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Συνολικό μέγεθος σε bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"Λεπτομέρειες χρήσης CPU για <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Χρόνος χρήστη:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Ώρα συστήματος:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Συνολικός χρόνος:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Ξεκινά: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g>η <xliff:g id="HOURS">%2$d</xliff:g>ω <xliff:g id="MINUTES">%3$d</xliff:g>λ <xliff:g id="SECONDS">%4$d</xliff:g>δ"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g>ω <xliff:g id="MINUTES">%2$d</xliff:g>λ <xliff:g id="SECONDS">%3$d</xliff:g>δ"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g>λ <xliff:g id="SECONDS">%2$d</xliff:g>δ"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g>δ"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Πακέτα που μοιράζονται αυτό το UID:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Δεν υπάρχουν διαθέσιμα δεδομένα χρήσης μπαταρίας"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Αισθητήρας:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Μερικό κλείδωμα αφύπνισης"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Αισθητήρας που χρησιμοποιείται από πακέτα:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Χρησιμοποιήθηκε <xliff:g id="COUNT">%1$d</xliff:g> φορές από <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Χρησιμοποιήθηκε <xliff:g id="COUNT">%1$d</xliff:g> φορές από ένα εκ των:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Εκτελείται"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Οθόνη ενεργοποιημένη"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Τηλέφωνο ενεργοποιημένο"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Χρόνος εκτός κατάστασης αδράνειας:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Χρόνος που παρήλθε με ενεργοποιημένη οθόνη:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Χρόνος που παρήλθε με ενεργοποιημένο τηλέφωνο:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"Ενεργοποιημένη μπαταρία:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Συνδεδεμένο σε:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Στατιστικά χρήσης"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Στατιστικά χρήσης"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Ταξινόμηση με βάση:"</string>
@@ -865,12 +908,19 @@
     <string name="power_usage_summary" msgid="7237084831082848168">"Τι χρησιμοποιούσε την μπαταρία"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Χρήση μπαταρίας από τη στιγμή της αποσύνδεσης από την τροφοδοσία"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"Χρήση μπαταρίας από τη στιγμή της επαναφοράς"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> με μπαταρία"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> από την αποσύνδεση"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Φόρτιση"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Οθόνη ενεργοποιημένη"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS ενεργοποιημένο"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Κανον. λειτ."</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Σήμα τηλεφώνου"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Χρόνος ενεργοποίησης της συσκευής"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"Ώρα ενεργοποίησης WiFi"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"Ώρα ενεργοποίησης WiFi"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Wi-Fi στην ώρα του"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Wi-Fi στην ώρα του"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Λεπτομέρειες από τη χρήση της μπαταρίας"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Λεπτομέρειες χρήσης"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Το τηλέφωνο είναι αδρανές"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"Συνολικός χρόνος CPU"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"Προσκήνιο CPU"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Διατήρηση λειτουρ."</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Το Wi-Fi είναι ενεργοποιημένο"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Τηλέφωνο"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Τα δεδομένα εστάλησαν"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Τα δεδομένα ελήφθησαν"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Πληροφορίες εφαρμογής"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Ρυθμίσεις εφαρμογών"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Ρυθμίσεις προβολής"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Ρυθμίσεις WiFi"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Ρυθμίσεις Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Ρυθμίσεις Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Μπαταρία που χρησιμοποιείται από φωνητικές κλήσεις"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Χρήση μπαταρίας όταν το τηλέφωνο είναι αδρανές"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Μπαταρία που χρησιμοποιείται από το Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Απενεργοποίηση του Bluetooth όταν δεν το χρησιμοποιείτε"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Δοκιμή σύνδεσης σε διαφορετική συσκευή bluetooth"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Χρήση μπαταρίας κατά την εκτέλεση των εφαρμογών"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Μπαταρία που χρησιμοποιείται από την εφαρμογή"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Τερματισμός ή κατάργηση εγκατάστασης της εφαρμογής"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Απενεργοποίηση του GPS όταν δεν χρησιμοποιείται"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Χειροκίνητος έλεγχος του GPS για την αποφυγή χρήσης του από την εφαρμογή"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"Η εφαρμογή ενδέχεται να προσφέρει ρυθμίσεις που θα μειώσουν τη χρήση της μπαταρίας"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> από την αποσύνδεση"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Από την τελευταία αποσύνδεση για <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Δεν έχει εγκατασταθεί"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Γυναίκα"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Άντρας"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Εγκατ. μηχανής σύνθεσης λόγου"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Εν. νέας μηχανής πριν τη χρήση"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Να επιτρέπεται στις εφαρμογές η πρόσβαση σε ασφαλή πιστοποιητικά και άλλα διαπιστευτήρια"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Εισαγωγή κωδικού πρόσβασης"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Εισαγάγετε τον κωδικό πρόσβασης του χώρου αποθήκευσης διαπιστευτηρίων."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Εγκατάσταση από κάρτα SD"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Εγκατάσταση κρυπτογραφημένων πιστοποιητικών από την κάρτα SD"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Εγκ. από αποθ. χώρο USB"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Εγκατάσταση από κάρτα SD"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Εγκ. κρ. πιστ. απ. χώρο USB"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Εγκατάσταση κρυπτογραφημένων πιστοποιητικών από την κάρτα SD"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Ορισμός κωδικού πρόσβασης"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Ορισμός ή αλλαγή κωδικού πρόσβασης χώρου αποθήκευσης διαπιστευτηρίων"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Εκκαθάριση χώρου αποθήκευσης"</string>
@@ -1068,6 +1124,16 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Αυτός ο χώρος αποθήκευσης διαπιστευτηρίων διαγράφτηκε."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Ο χώρος αποθήκευσης διαπιστευτηρίων ενεργοποιήθηκε."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Ο χώρος αποθήκευσης διαπιστευτηρίων απενεργοποιήθηκε."</string>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Κρυπτογραφημένο σύστημα αρχείων"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Κρυπτογράφηση ιδιωτικών δεδομένων χρήστη"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Ενεργοποίηση αποθήκευσης κρυπτογραφημένου συστήματος αρχείων για ιδιωτικά δεδομένα χρήστη σε αυτήν τη συσκευή"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Για την ενεργοποίηση των κρυπτογραφημένων συστημάτων αρχείων απαιτείται σβήσιμο των δεδομένων συσκευής."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Για την απενεργοποίηση των κρυπτογραφημένων συστημάτων αρχείων απαιτείται σβήσιμο των δεδομένων συσκευής."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Ενεργοποίηση"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Απενεργοποίηση"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Ακύρωση"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Η αλλαγή λειτουργίας κρυπτογραφημένων συστημάτων αρχείων ακυρώθηκε."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Προειδοποίηση κρυπτογραφημένων συστημάτων αρχείων."</string>
     <string name="emergency_tone_title" msgid="1055954530111587114">"Τόνος επείγουσας ανάγκης"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Ορισμός συμπεριφοράς κατά την πραγματοποίηση κλήσης επείγουσας ανάγκης"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Απόρρητο"</string>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Δημιουργία αντιγράφου ασφαλείας και επαναφορά"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Προσωπικά δεδομένα"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Δημιουργία αντιγράφων ασφαλείας για τα δεδομένα μου"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Δημιουργία αντιγράφων ασφαλείας για τις ρυθμίσεις και τα δεδομένα εφαρμογών."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Δεδομένα εφαρμογής δημιουργίας αντιγράφων ασφαλείας, κωδικοί πρόσβασης Wi-Fi και άλλες ρυθμίσεις στους διακομιστές Google"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Αυτόματη επαναφορά"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Εάν εγκαταστήσω ξανά μια εφαρμογή, να γίνει επαναφορά των ρυθμίσεων ή άλλων δεδομένων για τα οποία έχουν δημιουργηθεί αντίγραφα ασφαλείας."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Εάν εγκαταστήσω ξανά μια εφαρμογή, να γίνει επαναφορά των ρυθμίσεων ή άλλων δεδομένων για τα οποία έχουν δημιουργηθεί αντίγραφα ασφαλείας"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Αντίγραφο ασφαλείας"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Είστε βέβαιοι ότι θέλετε να διακόψετε τη δημιουργία αντιγράφων ασφαλείας των ρυθμίσεων και των δεδομένων εφαρμογών σας και να διαγράψετε όλα τα αντίγραφα από τους διακομιστές της Google;"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Είστε βέβαιοι ότι θέλετε να διακόψετε τη δημιουργία αντιγράφων ασφαλείας των κωδικών Wi-Fi, των σελιδοδεικτών και άλλων ρυθμίσεων και των δεδομένων εφαρμογών και να διαγράψετε όλα τα αντίγραφα από τους διακομιστές της Google;"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Ρυθμίσεις διαχείρισης συσκευής"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Διαχειριστής συσκευής"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Απενεργοποίηση"</string>
diff --git a/res/values-es-rUS/arrays.xml b/res/values-es-rUS/arrays.xml
index 099f3fc..e429620 100644
--- a/res/values-es-rUS/arrays.xml
+++ b/res/values-es-rUS/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Nunca cuando está conectado"</item>
     <item msgid="1986753720941888596">"Nunca"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"Uso de CPU"</item>
-    <item msgid="6401018715947316517">"Uso de red"</item>
-    <item msgid="188092590354892392">"Uso de GPS"</item>
-    <item msgid="8414109131222049141">"Uso del sensor"</item>
-    <item msgid="1327904325081257093">"Uso de despertador parcial"</item>
-    <item msgid="4832254146664706277">"Otro uso"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Desde la última vez que se desconectó"</item>
-    <item msgid="166936313535197598">"Total desde el reinicio"</item>
-    <item msgid="4793941382744963893">"Total en todo el tiempo"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Hora de uso"</item>
     <item msgid="1908750532762193304">"Lanzar recuento"</item>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 5822bfb..3c9c3c6 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Desmontar la tarjeta SD"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Formatear tarjeta SD"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Desmontar almacenamiento USB"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Desmontar la tarjeta SD"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Borrar almacenamiento USB"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Borrar la tarjeta SD"</string>
     <string name="small_font" msgid="2295331917424072635">"Pequeño"</string>
     <string name="medium_font" msgid="2068475425515133701">"Mediano"</string>
     <string name="large_font" msgid="599055175160971446">"Grande"</string>
     <string name="font_size_save" msgid="3450855718056759095">"Aceptar"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"Tarjeta SD"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Almacenamiento USB"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Tarjeta SD"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Estado de batería:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Enchufe:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Escala de batería:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Los cambios se aplican cuando se vuelve a conectar el cable USB"</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Activar el espacio de almacenamiento masivo USB"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Total de bytes:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"No hay tarjeta SD"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"Almacenamiento USB no montado"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"No hay tarjeta SD"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Bytes disponibles:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"La tarjeta SD se utiliza como dispositivo de almacenamiento masivo"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"Ahora es seguro extraer la tarjeta SD"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"¡Se ha extraído la tarjeta SD mientras se encontraba en uso!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"El almacenamiento USB se utiliza como dispositivo de almacenamiento masivo"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"La tarjeta SD se utiliza como dispositivo de almacenamiento masivo"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"Es seguro eliminar el almacenamiento USB"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"Ahora es seguro extraer la tarjeta SD"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"¡El almacenamiento USB se extrajo mientras se encontraba en uso!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"¡Se ha extraído la tarjeta SD mientras se encontraba en uso!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Bytes utilizados:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Explorando medios en la tarjeta SD..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"Tarjeta SD montada para sólo lectura"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Explorando almacenamiento USB para obtener medios..."</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Explorando medios en la tarjeta SD..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"Almacenamiento USB montado para sólo lectura"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"Tarjeta SD montada para sólo lectura"</string>
     <string name="next_label" msgid="4693520878012668114">"Siguiente"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"País"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Selecciona tu idioma"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Seleccionar actividad"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Información de dispositivo"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Información de la batería"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Historial de batería"</string>
     <string name="display_label" msgid="7403874003169865762">"Mostrar"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Información del teléfono"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"Tarjeta SD"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"Almacenamiento USB"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"Tarjeta SD"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Configuración de proxy"</string>
     <string name="cancel" msgid="6859253417269739139">"Cancelar"</string>
     <string name="settings_label" msgid="1626402585530130914">"Configuración"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Config."</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Configurac."</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Modo de avión"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Desactivar todas las conexiones inalámbricas"</string>
@@ -323,6 +333,9 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Como altavoz"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Para música y medios"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Recordar la configuración"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Utilizar campo la Transmisión de datos en proximidad para leer e intercambiar etiquetas"</string>
+    <string name="nfc_toggle_error" msgid="2233172102497535522">"Se produjo un error."</string>
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Encender Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Configuración Wi-Fi"</string>
@@ -376,6 +389,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Especificar cuándo se debe cambiar de Wi-Fi a datos de celular"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Se ha producido un problema al establecer la política de estado de inactividad."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"Dirección de MAC"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"Dirección IP"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"Configuración de IP"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Guardar"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Cancelar"</string>
@@ -442,7 +456,7 @@
     <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_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="dock_sounds_enable_title" msgid="3659084028644948905">"Sonido al insertar acoplar"</string>
     <string name="dock_sounds_enable_summary_on" msgid="8491180514199743771">"Reproducir sonido cuando se inserte o elimine un teléfono desde acoplar."</string>
@@ -487,18 +501,19 @@
     <string name="device_info_settings" msgid="475872867864762157">"Estado del teléfono"</string>
     <string name="system_update_settings_list_item_title" msgid="3342887311059985961">"Actualiz. del sistema"</string>
     <string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
-    <string name="firmware_version" msgid="4801135784886859972">"Versión Androide"</string>
+    <string name="firmware_version" msgid="4801135784886859972">"Versión de Android"</string>
     <string name="model_number" msgid="3765737700545384794">"Número de modelo"</string>
     <string name="baseband_version" msgid="1848990160763524801">"Versión de banda de base"</string>
     <string name="kernel_version" msgid="9192574954196167602">"Versión núcleo"</string>
-    <string name="build_number" msgid="3075795840572241758">"Crear número"</string>
+    <string name="build_number" msgid="3075795840572241758">"Número de compilación"</string>
     <string name="device_info_not_available" msgid="8062521887156825182">"No disponible"</string>
     <string name="device_status_activity_title" msgid="1411201799384697904">"Estado"</string>
     <string name="device_status" msgid="607405385799807324">"Estado"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Número de teléfono, señal, etc."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"Tarjeta SD y almac."</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Configuración de la tarjeta SD y del almacenamiento del teléfono"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Desmontar tarjeta SD, ver espacio de almacenamiento disponible"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Espacio de almacenamiento"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Configuración de almacenamiento"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Desmontar almacenamiento USB, ver almacenamiento disponible"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Desmontar tarjeta SD, ver espacio de almacenamiento disponible"</string>
     <string name="status_number" msgid="5123197324870153205">"Mi número de teléfono"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"Versión de PRL"</string>
@@ -514,24 +529,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"No disponible"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Hora productiva"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Hora de actividad"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Espacio de almac. interno del tel."</string>
-    <string name="sd_memory" msgid="151871913888051515">"Tarjeta SD"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Almacenamiento interno"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"Almacenamiento USB"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"Tarjeta SD"</string>
     <string name="memory_available" msgid="418542433817289474">"Espacio disponible"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Insertar una tarjeta SD para el montaje"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Montar tarjeta SD"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Montar la tarjeta SD"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"Desmontar la tarjeta SD"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Desmontar el almacenamiento USB interno"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Desmonta la tarjeta SD para que puedas extraerla de forma segura"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Insertar almacenamiento USB para el montaje"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Insertar una tarjeta SD para el montaje"</string>
+    <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Activar el almacenamiento USB"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Montar tarjeta SD"</string>
+    <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Activar el almacenamiento USB"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Montar la tarjeta SD"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Borrar almacenamiento USB"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Borrar la tarjeta SD"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Borra todos los datos del almacenamiento USB interno del teléfono, como la música y las fotos"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Borra todos los datos de la tarjeta SD del teléfono, como la música y las fotos"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"No disponible"</string>
     <string name="read_only" msgid="6702420168629076340">" (Sólo lectura)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Desmontar la tarjeta SD"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Si desmontas la tarjeta SD, algunas aplicaciones que estás usando se detendrán y es posible que no estén disponibles hasta que retires la tarjeta SD."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Error al desmontar la tarjeta SD"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"No se pudo desmontar la tarjeta SD. Vuelve a intentarlo más tarde."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"Se desmontará la tarjeta SD. Verifica el área de notificación para conocer el estado."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Desmontar almacenamiento USB"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Desmontar la tarjeta SD"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Si desmontas el almacenamiento USB, se detendrán algunas aplicaciones que utilices y es posible que no estén disponibles hasta que vuelvas a montar el almacenamiento USB."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Si desmontas la tarjeta SD, algunas aplicaciones que estás usando se detendrán y es posible que no estén disponibles hasta que retires la tarjeta SD."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"No se pudo desmontar el almacenamiento USB"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Error al desmontar la tarjeta SD"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"No se puede desactivar el almacenamiento USB. Vuelve a intentarlo más tarde."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"No se pudo desmontar la tarjeta SD. Vuelve a intentarlo más tarde."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"El almacenamiento USB se desmontará."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"Se desactivará la tarjeta SD."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Desmontando"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Desmontaje en progreso"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Estado de batería"</string>
@@ -571,21 +598,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Restablecimiento completado de configuración de APN predeterminada"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Restabl. datos de fábrica"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Borra todos los datos del teléfono"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Todos los datos de tu teléfono serán eliminados, incluidos:"\n<li>"tu cuenta de Google"</li>\n<li>"la configuración y los datos de la aplicación y el sistema"</li>\n<li>"las aplicaciones descargadas"</li>\n"No se eliminarán:"\n<li>"el software del sistema actual y las aplicaciones en lote"</li>\n<li>"archivos de tarjeta SD, como por ejemplo, música o fotos"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Si lo haces, se borrarán todos los datos del "<b>"almacenamiento interno"</b>"de tu teléfono, incluida:"\n\n<li>"tu cuenta de Google"</li>\n<li>"los datos y la configuración del sistema y de la aplicación"</li>\n<li>"las aplicaciones descargadas"</li>\n\n"Si deseas borrar todos los datos de este teléfono, deberás borrar el "<b>"almacenamiento USB"</b>"."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Si lo haces, se borrarán todos los datos del "<b>"almacenamiento interno"</b>"de tu teléfono, incluida:"\n\n<li>"tu cuenta de Google"</li>\n<li>"los datos y la configuración del sistema y de la aplicación"</li>\n<li>"las aplicaciones descargadas"</li>\n\n"Si también deseas borrar la música, las fotos y otros datos de usuario, deberás borrar la "<b>"tarjeta SD"</b>"."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Borrar almacenamiento USB"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Borrar la tarjeta SD"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Borrar todos los datos del almacenamiento USB del teléfono, como la música o las fotos."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Borra todos los datos de la tarjeta SD del teléfono, como la música o las fotos."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Restablecer el teléfono"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"¿Deseas borrar toda tu información personal y cualquier aplicación descargada?"</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Borrar todo"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Extrae tu patrón de desbloqueo"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Debes extraer tu patrón de desbloqueo para confirmar el restablecimiento de un teléfono."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"No se ha realizado ningún restablecimiento debido a que el servicio \"Borrar sistema\" no se encuentra disponible."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Formatear tarjeta SD."</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Borra todos los datos en la tarjeta SD"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Esta acción borrará la tarjeta SD en el teléfono. ¡Perderás TODA la información de la tarjeta!"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Formatear tarjeta SD"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"¿Deseas formatear tarjeta SD y borrar todos tus medios? ¡Esta acción no se puede cambiar!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Borrar almacenamiento USB"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Borrar la tarjeta SD"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Borra todos los datos del almacenamiento USB"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Borra todos los datos en la tarjeta SD"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Esta acción borrará el almacenamiento USB. ¡Perderás "<b>"todos"</b>" los datos almacenados allí!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Esta acción borrará la tarjeta SD. ¡Perderás "<b>"todos"</b>" los datos de la tarjeta!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Borrar almacenamiento USB"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Borrar la tarjeta SD"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"¿Deseas borrar el almacenamiento USB y suprimir todos los archivos almacenados allí? ¡Esta acción no se puede cambiar!"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"¿Deseas borrar la tarjeta SD y suprimir todos los archivos almacenados allí? ¡Esta acción no se puede cambiar!"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Borrar todo"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Extrae tu patrón de desbloqueo"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Debes extraer tu patrón de desbloqueo parar confirmar un formato de tarjeta SD."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Debes establecer el gráfico de desbloqueo para confirmar que deseas borrar el almacenamiento USB."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Debes establecer el gráfico de desbloqueo para confirmar que deseas borrar la tarjeta SD."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Config. de llamada"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Establecer correo de voz, desvío de llamadas, llamada en espera, identificador de llamadas"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Anclaje a red"</string>
@@ -609,7 +647,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Ver ubicación en las aplicaciones (como Mapas) mediante redes inalámbricas"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Ubicación determinada por Wi-Fi o redes de celulares"</string>
     <string name="location_gps" msgid="6296125378829097831">"Utilizar satélites de GPS"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Localiz. con precisión del nivel de calle (anular la sel. para ahorrar bat.)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Cuando se está ubicando, que sea preciso hasta el nivel de la calle."</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Localiz. a nivel de calle (nec. más batería además de la vista del cielo)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Utilizar GPS asistido"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Utilizar el servidor para asistir el GPS (anular la selección para reducir el uso de la red)"</string>
@@ -692,22 +730,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Aplicación"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Datos"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Desinstalar..."</string>
+    <string name="disable_text" msgid="6544054052049395202">"Inhabilitar"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Habilitar"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Borrar datos"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Desinstalar las actualizaciones"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Has elegido lanzar esta aplicación de manera predeterminada para algunas acciones."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"No hay configuraciones predeterminadas establecidas."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Borrar configuraciones predeterminadas"</string>
     <string name="unknown" msgid="1592123443519355854">"Desconocido"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Ordenar"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Ordenar por nombre"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Ordenar por tamaño"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Mostrar los servicios en ejecución"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Mostrar procesos almacenados en la memoria caché"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Administrar el espacio"</string>
     <string name="filter" msgid="2018011724373033887">"Filtro"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Seleccionar opciones de filtro"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Todos"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Descargado"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"En ejecución"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"En tarjeta SD"</string>
-    <string name="loading" msgid="3200408047793887917">"Cargando…"</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"Almacenamiento USB"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"En tarjeta SD"</string>
+    <string name="disabled" msgid="9206776641295849915">"Desactivado"</string>
+    <string name="no_applications" msgid="5190227407135243904">"No hay aplicaciones."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Almacenamiento interno"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"Almacenamiento USB"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"Desmontar tarjeta SD"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Recalculando el tamaño…"</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Suprimir"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Todos los datos de esta aplicación se suprimirán de forma permanente. Esto incluye todos los archivos, las configuraciones, las cuentas, las bases de datos, etc."</string>
@@ -727,7 +774,8 @@
     <string name="version_text" msgid="9189073826278676425">"versión <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Mover"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Mover al teléfono"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Mover a la tarjeta SD"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Mover a almacenamiento USB"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Mover a la tarjeta SD"</string>
     <string name="moving" msgid="6431016143218876491">"Moviendo"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"No queda suficiente espacio de almacenamiento."</string>
     <string name="does_not_exist" msgid="837163572898468245">"La aplicación no existe."</string>
@@ -735,29 +783,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"La ubicación específica de la instalación no es válida."</string>
     <string name="system_package" msgid="1030561474413022831">"Las actualizaciones del sistema no se pueden instalar en medios externos."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Provocar la detención"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Esta aplicación se reiniciará inmediatamente. ¿Estás seguro de que deseas provocar la detención?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Si detienes una aplicación a la fuerza, puedes alterar su comportamiento. ¿Estas seguro de que deseas hacerlo?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Mover aplicación"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Error al mover la aplicación. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Ubicación de instalación preferida"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Cambiar la ubicación de instalación preferida para nuevas aplicaciones"</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Uso del almacenamiento"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Ver el almacenamiento que usan las aplicaciones"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Servicios en ejecución"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Ver y controlar servicios actuales en ejecución"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Volver a comenzar"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Sin servicios en ejecución"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"¿Deseas detener el servicio?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"El servicio no ejecutará más hasta que comience de nuevo. Esto puede tener consecuencias no deseadas en la aplicación <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Detener"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Cancelar"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Comenz. aplic.: tocar para detener"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: tocar para administrar"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Disp.:<xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> en <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Otro: <xliff:g id="MEMORY">%2$s</xliff:g> en <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Proceso: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
-    <string name="language_settings" msgid="502219872342167227">"Idioma &amp; del teclado"</string>
+    <string name="cached" msgid="1059590879740175019">"Proceso de fondo almacenado en memoria caché"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"No hay nada activo."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Comenzado por aplicación."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> libre"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> utilizado"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> procesos y <xliff:g id="NUMSERVICES">%2$d</xliff:g> servicios"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> procesos y <xliff:g id="NUMSERVICES">%2$d</xliff:g> servicios"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> procesos <xliff:g id="NUMSERVICES">%2$d</xliff:g> servicio"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> procesos y <xliff:g id="NUMSERVICES">%2$d</xliff:g> servicios"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Ejecutando aplicación"</string>
+    <string name="no_services" msgid="7133900764462288263">"Inactivo"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Servicios"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Procesos"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Detener"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Config."</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Este servicio fue iniciado por su aplicación. Detenerlo puede provocar que falle la aplicación."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Esta aplicación no puede detenerse de manera segura. Al hacerlo, puedes perder parte de tu trabajo actual."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Este es un proceso de aplicación anterior que se conserva para obtener mayor velocidad en caso de que se lo necesite nuevamente. Generalmente no hay motivo para detenerlo."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: actualmente en uso. Toca los parámetros de configuración para controlarlo."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Proceso principal en uso."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"El servicio <xliff:g id="COMP_NAME">%1$s</xliff:g> está en uso."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"El proveedor <xliff:g id="COMP_NAME">%1$s</xliff:g> está en uso."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"¿Deseas detener el servicio?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"¿Estás seguro de que deseas detener el servicio del sistema? Si lo haces, algunas funciones de tu teléfono podrían dejar de ejecutarse correctamente hasta que lo apagues y enciendas nuevamente."</string>
+    <string name="language_settings" msgid="502219872342167227">"Idioma y teclado"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Idioma y Configuración del teclado"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Establecer opciones de país (idioma y región), ingreso de texto y corrección automática"</string>
-    <string name="language_category" msgid="3391756582724541530">"Configuración de país"</string>
-    <string name="text_category" msgid="6342540511465136739">"Configuración de texto"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Configuración de idiomas"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Configuración de teclado"</string>
     <string name="phone_language" msgid="1165758957501090679">"Seleccionar idioma"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Reemplazar automát."</string>
@@ -782,7 +850,6 @@
     <string name="testing" msgid="6584352735303604146">"Probando"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Información del teléfono"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Información sobre la batería"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Historial de batería"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Lanzamiento rápido"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Establecer métodos abreviados de teclado para lanzar aplicaciones"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Asignar aplicación"</string>
@@ -798,8 +865,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Administrar opciones de ingreso de texto"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Configuración de <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Configuración del teclado en pantalla"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Teclado del dispositivo"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Configuración de teclado integrado"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Teclado incorporado"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Configuración del teclado físico incorporada"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Desarrollo"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Establecer opciones para desarrollar aplicaciones"</string>
     <string name="enable_adb" msgid="7982306934419797485">"Depuración de USB"</string>
@@ -812,36 +879,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"La depuración de USB está prevista sólo con fines de desarrollo. Se puede utilizar para copiar datos entre tu computadora y tu dispositivo, instalar aplicaciones en tu dispositivo sin aviso y leer los datos de registro."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Elegir gadget"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Elegir control"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Detalles de UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"ID de usuario <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Detalles de uso de la red para <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Bytes recibidos: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Bytes enviados: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Total de bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"Detalles de uso de CPU para <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Hora del usuario:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Hora del sistema:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Tiempo total:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Comienza: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g>días <xliff:g id="HOURS">%2$d</xliff:g>h <xliff:g id="MINUTES">%3$d</xliff:g>min <xliff:g id="SECONDS">%4$d</xliff:g>seg"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g>h <xliff:g id="MINUTES">%2$d</xliff:g>min <xliff:g id="SECONDS">%3$d</xliff:g>seg"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g> min <xliff:g id="SECONDS">%2$d</xliff:g> seg"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g> seg"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Paquetes que comparten esta UID:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"No hay datos disponibles del uso de la batería"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Sensor:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Bloqueo de despertador parcial:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Sensor utilizado por los paquetes:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Utilizado <xliff:g id="COUNT">%1$d</xliff:g> veces por <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Utilizado <xliff:g id="COUNT">%1$d</xliff:g> veces por uno de:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"En ejecución"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Pantalla encendida"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Teléfono encendido"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Tiempo de encendido sin estar en estado de inactividad:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Tiempo de encendido de la pantalla:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Tiempo de encendido del teléfono:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"En la batería:"</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>
@@ -865,12 +906,19 @@
     <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>
     <string name="battery_since_reset" msgid="7464546661121187045">"Uso de la batería desde que se restableció"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> en la batería"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> desde que se desconectó"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Cargando"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Pantalla encendida"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS encendido"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Encender"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Señal del teléfono"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Hora de activación del dispositivo"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"WiFi a tiempo"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi a tiempo"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Wi-Fi a tiempo"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Wi-Fi a tiempo"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> -  <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Detalles de uso de la batería"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Utilizar detalles"</string>
@@ -884,7 +932,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Teléfono inactivo"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"CPU total"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"Primer plano de la CPU"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Mantener en funcionamiento"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Wi-Fi en funcionamiento"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Teléfono"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Datos enviados"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Datos recibidos"</string>
@@ -896,7 +946,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Información de aplicación"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Configuración de aplicación"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Configuración de visualización"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Configuración de WiFi"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Configuración Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Config. de Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"La batería está siendo utilizada por llamadas de voz"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"La batería se utiliza cuando el teléfono está inactivo"</string>
@@ -909,9 +959,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"La batería está siendo utilizada por bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Desactiva Bluetooth cuando no lo utilizas"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Intentar conectarse a un dispositivo Bluetooth diferente"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"La batería es utilizada por las aplicaciones durante el roaming"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"La batería está siendo utilizada por la aplicación"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Detener o desinstalar la aplicación"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Desactivar el GPS cuando no lo utilizas"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Controle manualmente el GPS para que la aplicación no lo use."</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"La aplicación podrá ofrecer una configuración para 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 desconectó"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Durante la última desconexión para <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1011,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"No se ha instalado."</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Femenino"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Masculino"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Se instaló motor de síntesis de voz"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Habilitar nuevo motor antes de usar"</string>
     <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>
@@ -1047,8 +1099,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Permitir a las aplic. acceder a certificados seguros y otras cred."</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Ingresar contraseña"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Ingresar la contraseña de almacenamiento de la credencial"</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Instalar de la tarjeta SD"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Instalar certificados encriptados de la tarjeta SD"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Instalar desde almacenamiento USB"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Instalar de la tarjeta SD"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Instalar certificados encriptados del almacenamiento USB"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Instalar certificados encriptados de la tarjeta SD"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Establecer contraseña"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Establecer o cambiar la contraseña de almacenamiento de la credencial"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Borrar almacenamiento"</string>
@@ -1068,6 +1122,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Sistema de encriptado de archivos"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Encriptar los datos privados del usuario"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Habilitar el almacenamiento del sistema de encriptado de archivos para los datos privados del usuario en este dispositivo"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Si se habilitan los sistemas de encriptado de archivos, se requiere la eliminación de datos del dispositivo."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Si se deshabilitan los sistemas de encriptado de archivos, se requiere la eliminación de datos del dispositivo."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Activar"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Desactivar"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Cancelar"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Cambio en el modo de sistemas de encriptado de archivos cancelado"</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Advertencia de los sistemas de encriptado de archivos."</string>
     <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>
@@ -1075,11 +1139,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Hacer una copia de seguridad y restaurar"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Datos personales"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Hacer una copia de seguridad de mis datos"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Hacer una copia de seguridad de mi configuración y de otros datos de la aplicación"</string>
-    <string name="auto_restore_title" msgid="5397528966329126506">"Restaurar automáticamente "</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Si reinstalo una aplicación, restablecer las configuraciones o los otros datos con copia de seguridad."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Hacer copias de seguridad de los datos de la aplicación, de las contraseñas de Wi-Fi, y otra configuración en los servidores de Google"</string>
+    <string name="auto_restore_title" msgid="5397528966329126506">"Restaurar automáticamente"</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Si reinstalo una aplicación, restablecer las configuraciones o los otros datos con copia de seguridad"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Copia de seguridad"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"¿Estás seguro de que deseas dejar de hacer copias de seguridad de tu configuración y aplicaciones, y borrar todas las copias de los servidores de Google?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"¿Estás seguro de que deseas dejar de hacer copias de seguridad de tus contraseñas de Wi-Fi, marcadores y otros datos de configuración y aplicaciones, y borrar todas las copias de los servidores de Google?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Configuración de la administración del dispositivo"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Administrador del dispositivo"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Desactivar"</string>
diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml
index 598474c..202508f 100644
--- a/res/values-es/arrays.xml
+++ b/res/values-es/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Nunca si se está cargando la batería"</item>
     <item msgid="1986753720941888596">"Nunca"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"Uso de CPU"</item>
-    <item msgid="6401018715947316517">"Uso de red"</item>
-    <item msgid="188092590354892392">"Uso de GPS"</item>
-    <item msgid="8414109131222049141">"Uso del sensor"</item>
-    <item msgid="1327904325081257093">"Uso de actividad parcial"</item>
-    <item msgid="4832254146664706277">"Otro uso"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Desde la última vez que se cargó"</item>
-    <item msgid="166936313535197598">"Total desde inicio"</item>
-    <item msgid="4793941382744963893">"Total durante todo el tiempo"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Tiempo de uso"</item>
     <item msgid="1908750532762193304">"Número de inicios"</item>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 471b940..9917c78 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Desactivar tarjeta SD"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Formatear tarjeta SD"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Desactivar USB"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Desactivar tarjeta SD"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Borrar almacenamiento USB"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Borrar tarjeta SD"</string>
     <string name="small_font" msgid="2295331917424072635">"Pequeño"</string>
     <string name="medium_font" msgid="2068475425515133701">"Mediano"</string>
     <string name="large_font" msgid="599055175160971446">"Grande"</string>
     <string name="font_size_save" msgid="3450855718056759095">"Aceptar"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"Tarjeta SD"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Almacenamiento USB"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Tarjeta SD"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Estado de la batería:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Cargar batería:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Nivel de batería:"</string>
@@ -180,34 +183,41 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Los cambios se aplican cuando se vuelve a conectar el cable USB."</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Habilitar almacenamiento masivo USB"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Bytes totales:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Falta la tarjeta SD"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"Almacenamiento USB no activado"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Falta la tarjeta SD"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Bytes disponibles:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"La tarjeta SD se está utilizando como dispositivo de almacenamiento masivo."</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"Es seguro extraer la tarjeta SD"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"La tarjeta SD se ha extraído mientras estaba en uso."</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USB como almacenamiento masivo"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"La tarjeta SD se está utilizando como dispositivo de almacenamiento masivo."</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"Es seguro extraer el USB."</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"Es seguro extraer la tarjeta SD"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"USB extraído en uso"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"La tarjeta SD se ha extraído mientras estaba en uso."</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Bytes utilizados:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Buscando medios en tarjeta SD..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"Tarjeta SD activada en modo de solo lectura"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Buscando archivos almac USB…"</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Buscando medios en tarjeta SD..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"USB activado solo lectura"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"Tarjeta SD activada en modo de solo lectura"</string>
     <string name="next_label" msgid="4693520878012668114">"Siguiente"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Configuración regional"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Selecciona el idioma que prefieras."</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Seleccionar actividad"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Información del dispositivo"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Información sobre la batería"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Historial de la batería"</string>
     <string name="display_label" msgid="7403874003169865762">"Pantalla"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Información sobre el teléfono"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"Tarjeta SD"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"Almacenamiento USB"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"Tarjeta SD"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Ajustes de proxy"</string>
     <string name="cancel" msgid="6859253417269739139">"Cancelar"</string>
     <string name="settings_label" msgid="1626402585530130914">"Ajustes"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Ajustes"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Ajustes"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Modo avión"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Inhabilitar todas las conexiones inalámbricas"</string>
     <string name="airplane_mode_turning_on" msgid="8871739222526957255">"Inhabilitando conexiones inalámbricas..."</string>
     <string name="airplane_mode_turning_off" msgid="3393168549611505996">"Habilitando conexiones inalámbricas..."</string>
     <string name="radio_controls_title" msgid="5868688473587168882">"Conexiones inalámbricas y redes"</string>
-    <string name="wireless_networks_settings_title" msgid="149274247949769551">"Ajustes de red y de inalámbrica"</string>
+    <string name="wireless_networks_settings_title" msgid="149274247949769551">"Configuración inalámbrica y de red"</string>
     <string name="radio_controls_summary" msgid="2998818677094465517">"Administrar Wi-Fi, Bluetooth, modo avión, redes móviles y VPN"</string>
     <string name="roaming" msgid="3596055926335478572">"Itinerancia de datos"</string>
     <string name="roaming_enable" msgid="3737380951525303961">"Establecer conexión con servicios de datos en itinerancia"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Como altavoz del teléfono"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Para música y contenido multimedia"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Ajustes de recordatorio"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Usar Comunicación de campo cercano (NFC) para leer e intercambiar etiquetas"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Activar Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Ajustes de Wi-Fi"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Especificar cuándo cambiar de Wi-Fi a datos móviles"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Se ha producido un problema al intentar establecer la política de suspensión."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"Dirección MAC"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"Dirección IP"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"Ajustes de IP"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Guardar"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Cancelar"</string>
@@ -398,7 +414,7 @@
     <string name="display_settings_title" msgid="1708697328627382561">"Pantalla"</string>
     <string name="sound_settings" msgid="5007659014828162881">"Ajustes de sonido"</string>
     <string name="silent_mode_title" msgid="3181479108593217704">"Modo silencio"</string>
-    <string name="silent_mode_summary" msgid="3309650676072917899">"Silenciar todos los sonidos, excepto el contenido multimedia y las alarmas "</string>
+    <string name="silent_mode_summary" msgid="3309650676072917899">"Silenciar todos los sonidos, excepto el contenido multimedia y las alarmas"</string>
     <string name="silent_mode_incl_alarm_summary" msgid="2088830834182228458">"Todos los sonidos excepto los multimedia están silenciados."</string>
     <string name="ringtone_title" msgid="5379026328015343686">"Tono del teléfono"</string>
     <string name="ringtone_summary" msgid="2630023412632683493"></string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Estado"</string>
     <string name="device_status" msgid="607405385799807324">"Estado"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Número de teléfono, señal, etc."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"Almacenamiento"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Almacenamiento en teléf y tarjeta SD"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Desactivar tarjeta SD, ver almacenamiento disponible."</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Almacenamiento"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Ajustes de almacenamiento"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Desactivar almacenamiento USB, ver almacenamiento disponible"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Desactivar tarjeta SD, ver almacenamiento disponible."</string>
     <string name="status_number" msgid="5123197324870153205">"Mi número de teléfono"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"Versión de PRL"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"No disponible"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Tiempo de actividad"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Tiempo de actividad"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Almacenamiento interno del teléfono"</string>
-    <string name="sd_memory" msgid="151871913888051515">"Tarjeta SD"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Almacenamiento interno"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"Almacenamiento USB"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"Tarjeta SD"</string>
     <string name="memory_available" msgid="418542433817289474">"Espacio disponible"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Insertar una tarjeta SD para el montaje"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Activar tarjeta SD"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Activar tarjeta SD"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"Desactivar tarjeta SD"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Desactivar almacenamiento USB interno"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Desactivar la tarjeta SD para extraerla de forma segura"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Insert alm USB para activ"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Insertar una tarjeta SD para el montaje"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Activar almacenam compart"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Activar tarjeta SD"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Activar almacenam USB interno"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Activar tarjeta SD"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Borrar almacenamiento USB"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Borrar tarjeta SD"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Borr dat USB intern (mús, fot)"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Permite borrar todos los datos de la tarjeta SD del teléfono, como la música y las fotos"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"No disponible"</string>
     <string name="read_only" msgid="6702420168629076340">" (Sólo lectura)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Desactivar tarjeta SD"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Si desactivas la tarjeta SD, se detendrán algunas aplicaciones que estás utilizando y estas no estarán disponibles hasta que la vuelvas a activar."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"No se ha podido desactivar la tarjeta SD."</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"No se puede desactivar la tarjeta SD. Vuelve a intentarlo más tarde."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"Se va a desmontar la tarjeta SD. Puedes consultar el estado en el área de notificaciones."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Desactivar USB"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Desactivar tarjeta SD"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Si desactivas el almacenamiento USB, algunas aplicaciones que estás utilizando se detendrán y no estarán disponibles hasta que lo vuelvas a activar."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Si desactivas la tarjeta SD, se detendrán algunas aplicaciones que estás utilizando y estas no estarán disponibles hasta que la vuelvas a activar."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Error al desactivar USB"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"No se ha podido desactivar la tarjeta SD."</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"No se puede desactivar el almacenamiento USB. Vuelve a intentarlo más tarde."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"No se puede desactivar la tarjeta SD. Vuelve a intentarlo más tarde."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"Se desactivará el almacenamiento USB."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"Se desactivará la tarjeta SD."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Desmontando"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"La tarjeta SD se está desactivando."</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Estado de la batería"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Restablecimiento de la configuración de APN predeterminada completado"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Restablecer datos de fábrica"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Borrar todos los datos del teléfono"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Se borrarán todos los datos del teléfono, incluidos los siguientes elementos:"\n<li>"tu cuenta de Google,"</li>\n<li>"la configuración y los datos de las aplicaciones y del sistema,"</li>\n<li>"las aplicaciones descargadas."</li>\n"No se borrarán los siguientes elementos:"\n<li>"las aplicaciones agrupadas y el software del sistema actual,"</li>\n<li>"los archivos de la tarjeta SD como, por ejemplo, música o fotografías."</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Se borrarán todos los datos del "<b>"almacenamiento interno"</b>" del teléfono, incluidos: la configuración y los datos de aplicaciones y del sistema de "\n\n<li>"tu cuenta de Google"</li>\n<li>","</li>\n<li>"las aplicaciones descargadas."</li>\n\n"Para eliminar todos los datos de este teléfono, debes borrar el "<b>"almacenamiento USB"</b>"."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Se borrarán todos los datos del "<b>"almacenamiento interno"</b>" del teléfono, incluidos: la configuración y los datos de aplicaciones y del sistema de "\n\n<li>"tu cuenta de Google"</li>\n<li>","</li>\n<li>"las aplicaciones descargadas."</li>\n\n"Si también quieres eliminar la música, las imágenes y otros datos de usuario, debes borrar la "<b>"tarjeta SD"</b>"."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Borrar almacenamiento USB"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Borrar tarjeta SD"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Borr dat USB intern (mús, fot)"</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Borra todos los datos de la tarjeta SD, como música y fotos"</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Reiniciar teléfono"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"¿Quieres borrar toda tu información personal y las aplicaciones que has descargado? Esta acción no se puede deshacer."</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Borrar todo"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Crea tu patrón de desbloqueo."</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Debes crear un patrón de desbloqueo para confirmar el reinicio del teléfono."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"No se ha reiniciado el sistema porque el servicio Borrado del sistema no está disponible."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Formatear tarjeta SD"</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Borra todos los datos de la tarjeta SD."</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Esta acción borrará el contenido de la tarjeta SD del teléfono. Perderás TODOS los datos de la tarjeta."</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Formatear tarjeta SD"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"¿Quieres formatear la tarjeta SD y borrar todos los datos? Esta acción no se puede deshacer."</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Borrar almacenamiento USB"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Borrar tarjeta SD"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Borra los datos de USB"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Borra todos los datos de la tarjeta SD."</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Se borrará el almacenamiento USB y perderás "<b>"todos"</b>" los datos almacenados."</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Se borrará el contenido de la tarjeta SD y perderás "<b>"todos"</b>" los datos de la tarjeta."</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Borrar almacenamiento USB"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Borrar tarjeta SD"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"¿Quieres borrar el almacenamiento USB y eliminar todos sus archivos? Esta acción no se puede deshacer."</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"¿Quieres borrar la tarjeta SD y eliminar todos sus archivos? Esta acción no se puede deshacer."</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Borrar todo"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Crea tu patrón de desbloqueo."</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Debes crear un patrón de desbloqueo para confirmar el formato de la tarjeta SD."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Debes dibujar el patrón de desbloqueo para confirmar que quieres borrar el almacenamiento USB."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Debes dibujar el patrón de desbloqueo para confirmar que quieres borrar la tarjeta SD."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Ajustes de llamada"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Configurar buzón, llamada en espera, desvío e identificador"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Anclaje a red"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Para ver una ubicación en aplicaciones (por ejemplo, Google Maps)"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Ubicación determinada por redes móviles o Wi-Fi"</string>
     <string name="location_gps" msgid="6296125378829097831">"Utilizar satélites GPS"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Para detectar ubicación (desactivar para ahorrar batería)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Ubicación precisa a nivel de calle"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Localizar en nivel de calle (requiere más batería además de la vista aérea)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Utilizar GPS asistido"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Utilizar el servidor para asistir al GPS (desactivar para reducir el uso de la red)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Aplicación"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Datos"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Desinstalar"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Inhabilitar"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Habilitar"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Borrar datos"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Desinstalar actualizaciones"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Has elegido ejecutar la aplicación de forma predeterminada para algunas acciones."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"No se han establecido valores predeterminados."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Borrar valores predeterminados"</string>
     <string name="unknown" msgid="1592123443519355854">"Desconocido"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Ordenar"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Ordenar por nombre"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Ordenar por tamaño"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Mostrar serv en ejecución"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Mostr proc almac en caché"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Administrar espacio"</string>
     <string name="filter" msgid="2018011724373033887">"Filtrar"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Seleccionar opciones de filtrado"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Todas"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Descargada"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"En ejecución"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"En tarjeta SD"</string>
-    <string name="loading" msgid="3200408047793887917">"Cargando..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"Almacenamiento USB"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"En tarjeta SD"</string>
+    <string name="disabled" msgid="9206776641295849915">"Inhabilitada"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Sin aplicaciones"</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Almac interno"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"Almacenamiento USB"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"Tarjeta SD"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Recalculando tamaño..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Eliminar"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Todos los datos de la aplicación se eliminarán de forma permanente, incluidos todos los archivos, la configuración, las cuentas, las bases de datos, etc."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"versión <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Mover"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Mover al teléfono"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Mover a la tarjeta SD"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Mover a almacenamiento USB"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Mover a la tarjeta SD"</string>
     <string name="moving" msgid="6431016143218876491">"Moviendo"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"No queda suficiente espacio de almacenamiento."</string>
     <string name="does_not_exist" msgid="837163572898468245">"La aplicación especificada no existe."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"La ubicación de instalación especificada no es válida."</string>
     <string name="system_package" msgid="1030561474413022831">"Las actualizaciones del sistema no se pueden instalar en medios externos."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Forzar detención"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Esta aplicación se reiniciará de forma inmediata. ¿Estás seguro de que deseas forzar la detención?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Forzar la detención de una aplicación puede dar lugar a un comportamiento inadecuado. ¿Seguro que quieres continuar?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Mover aplicación"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"No se ha podido mover la aplicación. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Ubicación de instalación preferida"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Modificar ubicación de instalación preferida para nuevas aplicaciones"</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Uso de almacenamiento"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Ver almacenamiento utilizado por aplicaciones"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Servicios en ejecución"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Ver y controlar los servicios en ejecución"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Reiniciando"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"No hay servicios en ejecución."</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"¿Quieres detener el servicio?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"El servicio no se ejecutará hasta que se vuelva a iniciar, lo que puede provocar consecuencias no deseadas en la aplicación <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Detener"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Cancelar"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Iniciado por la aplicación: tocar para detener"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: tocar para administrar"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Disp.: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> en <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Otros: <xliff:g id="MEMORY">%2$s</xliff:g> en <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Proceso: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Proceso en segundo plano almacenado en caché"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"No hay nada en ejecución."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Iniciado por la aplicación."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> libre"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> en uso"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> proceso y <xliff:g id="NUMSERVICES">%2$d</xliff:g> servicio"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> proceso y <xliff:g id="NUMSERVICES">%2$d</xliff:g> servicios"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> procesos y <xliff:g id="NUMSERVICES">%2$d</xliff:g> servicio"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> procesos y <xliff:g id="NUMSERVICES">%2$d</xliff:g> servicios"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Aplicación en ejecución"</string>
+    <string name="no_services" msgid="7133900764462288263">"Inactivos"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Servicios"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Procesos"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Detener"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Ajustes"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Servicio iniciado por su aplicación. Si se detiene, se puede producir un error en la aplicación."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"No se puede detener la aplicación de forma segura. Si lo haces, puedes perder parte de tu trabajo."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Se trata de un proceso de aplicación antiguo que se mantiene para mejorar la velocidad si vuelve a ser necesario. Normalmente, no es necesario detenerlo."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: actualmente en uso. Toca en \"Ajustes\" para controlarlo."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Proceso principal en uso"</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Servicio <xliff:g id="COMP_NAME">%1$s</xliff:g> en uso"</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Proveedor <xliff:g id="COMP_NAME">%1$s</xliff:g> en uso"</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"¿Deseas detener el servicio del sistema?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"¿Estás seguro de que deseas detener este servicio del sistema? Si lo haces, algunas utilidades podrían dejar de funcionar correctamente hasta que apagues el teléfono y vuelvas a encenderlo."</string>
     <string name="language_settings" msgid="502219872342167227">"Idioma y teclado"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Ajustes de teclado y de idioma"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Configuración regional, opciones de autocorrección e introducción de texto"</string>
-    <string name="language_category" msgid="3391756582724541530">"Configuración regional"</string>
-    <string name="text_category" msgid="6342540511465136739">"Ajustes de texto"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Ajustes de idioma"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Ajustes de teclado"</string>
     <string name="phone_language" msgid="1165758957501090679">"Seleccionar idioma"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Corrección automática"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Prueba"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Información sobre el teléfono"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Información sobre la batería"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Historial de la batería"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Inicio rápido"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Establecer accesos rápidos del teclado para ejecutar aplicaciones"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Asignar aplicación"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Administrar opciones de introducción de texto"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Ajustes de <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Ajustes de teclado en pantalla"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Teclado del dispositivo"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Ajustes del teclado integrado"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Teclado integrado"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Ajustes de teclado físico integrado"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Desarrollo"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Establecer opciones de desarrollo de aplicaciones"</string>
     <string name="enable_adb" msgid="7982306934419797485">"Depuración USB"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"La depuración USB solo está indicada para actividades de desarrollo. Se puede utilizar para intercambiar datos entre el equipo y el dispositivo, para instalar aplicaciones en el dispositivo sin recibir notificaciones y para leer datos de registro."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Seleccionar gadget"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Seleccionar widget"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Detalles del ID único <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"ID único <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Detalles de uso de red para <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Bytes recibidos: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Bytes enviados: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Bytes totales: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"Detalles de uso de CPU para <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Tiempo de usuario:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Tiempo del sistema:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Tiempo total"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Inicios: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g> d <xliff:g id="HOURS">%2$d</xliff:g> h <xliff:g id="MINUTES">%3$d</xliff:g> min <xliff:g id="SECONDS">%4$d</xliff:g> s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g> h <xliff:g id="MINUTES">%2$d</xliff:g> min <xliff:g id="SECONDS">%3$d</xliff:g> s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g> min <xliff:g id="SECONDS">%2$d</xliff:g> s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g> s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Paquetes que comparten este ID único:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"No hay datos disponibles sobre el uso de la batería."</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Sensor:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Bloqueo de actividad parcial:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Sensor utilizado por paquetes:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Utilizado <xliff:g id="COUNT">%1$d</xliff:g> veces por <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Utilizado <xliff:g id="COUNT">%1$d</xliff:g> veces por uno de:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"En ejecución"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Pantalla encendida"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Teléfono encendido"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Tiempo transcurrido sin suspensión:"</string>
-    <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="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>
@@ -865,12 +908,19 @@
     <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_reset" msgid="7464546661121187045">"Uso de la batería desde que se restableció"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> de batería"</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_charging_label" msgid="4223311142875178785">"Cargando..."</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Pantalla encendida"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS activado"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Activa"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Señal del teléfono"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Tiempo de actividad del dispositivo"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"Tiempo de conexión WiFi"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"Tiempo de conexión WiFi"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Tiempo de conexión WiFi"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Tiempo de conexión WiFi"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Detalles de uso de la batería"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Detalles de uso"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Teléfono inactivo"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"Total de CPU"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"Primer plano de la CPU"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Mantener activo"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"WiFi en funcionamiento"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Teléfono"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Datos enviados"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Datos recibidos"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Información de la aplicación"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Ajustes de aplicaciones"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Ajustes de pantalla"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Ajustes WiFi"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Ajustes de Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Ajustes de Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Batería utilizada por llamadas de voz"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Batería utilizada cuando el teléfono está inactivo"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batería utilizada por Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Desactiva el Bluetooth cuando no lo estés utilizando."</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Intenta conectarte a un dispositivo Bluetooth diferente."</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Batería utilizada por aplicaciones en ejecución"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Batería utilizada por aplicación"</string>
     <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_gps" msgid="4545056413090932541">"Controlar el GPS manualmente para evitar que la aplicación lo utilice"</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 desenchufó"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Desde la última vez que se desenchufó para <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Sin instalar"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Mujer"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Hombre"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Motor síntesis de voz instalado"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Habilitar nuevo motor"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Permitir que las aplicaciones accedan a los certificados seguros y a otras credenciales"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Introducir contraseña"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Introduce la contraseña de almacenamiento de credenciales."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Instalar desde la tarjeta SD"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Instalar certificados encriptados de tarjeta SD"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Instalar desde almac USB"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Instalar desde la tarjeta SD"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Inst cert encr de alm USB"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Instalar certificados encriptados de tarjeta SD"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Establecer contraseña"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Establecer o cambiar la contraseña de almacenamiento de credenciales"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Borrar almacenamiento"</string>
@@ -1068,6 +1124,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Sistema de archivos encriptados"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Encriptar datos de usuario privados"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Habilitar almacenamiento de sistema de archivos encriptados para datos de usuario privados en este dispositivo"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Es necesario eliminar los datos del dispositivo para habilitar los sistemas de archivos encriptados."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Es necesario eliminar los datos del dispositivo para inhabilitar los sistemas de archivos encriptados."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Habilitar"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Inhabilitar"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Cancelar"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Se ha cancelado el cambio de modo de sistemas de archivos encriptados."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Advertencia de sistemas de archivos encriptados"</string>
     <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>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Copia de seguridad y restauración"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Datos personales"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Copia de seguridad de datos"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Copia de seguridad de ajustes y otros datos de aplicación"</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Realizar copia de seguridad en servidores de Google de datos de aplicaciones, contraseñas Wi-Fi y otras opciones de configuración"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Restauración automática"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Restaurar ajustes con copia de seguridad y otros datos si vuelvo a instalar una aplicación"</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Restaurar ajustes con copia de seguridad y otros datos si vuelvo a instalar una aplicación"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Copia de seguridad"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"¿Estás seguro de que quieres detener la copia de seguridad de la configuración y de los datos de aplicación y borrar todas las copias de los servidores de Google?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"¿Estás seguro de que quieres detener la copia de seguridad de las contraseñas WiFi, de los marcadores y de otros datos de aplicaciones y opciones de configuración y borrar todas las copias de los servidores de Google?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Ajustes de administración de dispositivos"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Administrador de dispositivos"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Desactivar"</string>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
index 5840edf..e9633f6 100644
--- a/res/values-fr/arrays.xml
+++ b/res/values-fr/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Jamais si branché"</item>
     <item msgid="1986753720941888596">"Jamais"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"Utilisation de l\'UC"</item>
-    <item msgid="6401018715947316517">"Utilisation du réseau"</item>
-    <item msgid="188092590354892392">"Utilisation du GPS"</item>
-    <item msgid="8414109131222049141">"Utilisation du capteur"</item>
-    <item msgid="1327904325081257093">"Utilisation en activité partielle"</item>
-    <item msgid="4832254146664706277">"Autre utilisation"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Depuis le dernier débranchement"</item>
-    <item msgid="166936313535197598">"Total depuis le démarrage"</item>
-    <item msgid="4793941382744963893">"Total toutes périodes comprises"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Temps d\'utilisation"</item>
     <item msgid="1908750532762193304">"Nombre de lancements"</item>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index d102205..e272fbb 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID ou IDC"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Retirer la carte SD"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Formater la carte SD"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Désinstaller mémoire USB"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Retirer la carte SD"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Effacer la mémoire de stockage USB"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Effacer la carte SD"</string>
     <string name="small_font" msgid="2295331917424072635">"Petite"</string>
     <string name="medium_font" msgid="2068475425515133701">"Moyenne"</string>
     <string name="large_font" msgid="599055175160971446">"Grande"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"Carte SD"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Mémoire de stockage USB"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Carte SD"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"État de la batterie :"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Prise électrique :"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Batterie :"</string>
@@ -178,29 +181,36 @@
     <string name="band_mode_failed" msgid="1495968863884716379">"Échec"</string>
     <string name="band_mode_succeeded" msgid="2701016190055887575">"OK"</string>
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Les modifications prendront effet lors de la prochaine connexion du câble USB."</string>
-    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Activer le stockage de masse USB"</string>
+    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Activer la mémoire de stockage de masse USB"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Octets au total :"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Aucune carte SD n\'a été trouvée."</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"Mémoire de stockage USB non installée"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Aucune carte SD n\'a été trouvée."</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Octets disponibles :"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"La carte SD est utilisée comme périphérique de stockage."</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"Vous pouvez maintenant retirer la carte SD en toute sécurité."</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"La carte SD a été retirée pendant son utilisation !"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"Mémoire USB utilisée comme stockage de masse"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"La carte SD est utilisée comme périphérique de stockage."</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"Retirez la mémoire USB en toute sécurité."</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"Vous pouvez maintenant retirer la carte SD en toute sécurité."</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"Mémoire USB retirée en cours d\'utilisation"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"La carte SD a été retirée pendant son utilisation !"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Octets utilisés :"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Recherche de fichiers multimédias sur la carte SD…"</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"Carte SD montée en lecture seule"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Recherche de médias sur USB…"</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Recherche de fichiers multimédias sur la carte SD…"</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"Mémoire de stockage USB en lecture seule"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"Carte SD montée en lecture seule"</string>
     <string name="next_label" msgid="4693520878012668114">"Suivant"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Paramètres régionaux"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Choisir la langue"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Sélectionner une activité"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Informations sur l\'appareil"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Informations sur la batterie"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Historique de la batterie"</string>
     <string name="display_label" msgid="7403874003169865762">"Afficher"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Informations sur le téléphone"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"Carte SD"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"Mémoire USB"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"Carte SD"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Paramètres proxy"</string>
     <string name="cancel" msgid="6859253417269739139">"Annuler"</string>
     <string name="settings_label" msgid="1626402585530130914">"Paramètres"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Paramètres"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Paramètres"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Mode avion"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Désactiver toutes les connexions sans fil"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Comme téléphone à haut-parleur"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Pour la musique et le multimédia"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Mémoriser ces paramètres"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Utiliser la communication en champ proche pour lire et échanger des tags"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Activer le Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Paramètres Wi-Fi"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Indiquer quand basculer du Wi-Fi sur le réseau de données mobile"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Un problème est survenu lors du paramétrage de la politique de veille."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"Adresse MAC"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"Adresse IP"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"Paramètres IP"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Enregistrer"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Annuler"</string>
@@ -412,7 +428,7 @@
     <string name="notification_sound_title" msgid="6316316069880531693">"Sonnerie de notification"</string>
     <string name="notification_sound_summary" msgid="2953599929394109819"></string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Voyant de notification"</string>
-    <string name="notification_pulse_summary" msgid="6899220780534617152">"Faire clignoter le voyant de la trackball à chaque notification"</string>
+    <string name="notification_pulse_summary" msgid="6899220780534617152">"Faire clignoter le voyant du trackball à chaque notification"</string>
     <string name="incoming_call_volume_title" msgid="8073714801365904099">"Sonnerie"</string>
     <string name="notification_volume_title" msgid="2012640760341080408">"Notification"</string>
     <string name="checkbox_notification_same_as_incoming_call" msgid="1073644356290338921">"Utiliser le volume des appels entrants pour les notifications"</string>
@@ -439,7 +455,7 @@
     <string name="dock_settings_title" msgid="9161438664257429372">"Paramètres station d\'accueil"</string>
     <string name="dock_audio_settings_title" msgid="3324750259959570305">"Audio"</string>
     <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Paramètres station d\'accueil bureau associée"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Paramètres station d\'accueil voiture associée"</string>
+    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Paramètres support voiture associé"</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 station d\'accueil associée"</string>
     <string name="dock_not_found_title" msgid="3290961741828952424">"Station d\'accueil introuvable"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"État"</string>
     <string name="device_status" msgid="607405385799807324">"État"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Numéro de téléphone, signal, etc."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"Carte SD et mémoire"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Carte SD et paramètres mémoire du tél."</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Retirer la carte SD, afficher la mémoire disponible"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Stockage"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Paramètres de stockage"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Désinstaller la mémoire de stockage USB, afficher l\'espace disponible"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Retirer la carte SD, afficher la mémoire disponible"</string>
     <string name="status_number" msgid="5123197324870153205">"Mon numéro de téléphone"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"Version PRL"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Non disponible"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Durée d\'activité"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Temps en activité"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Mémoire interne du téléphone"</string>
-    <string name="sd_memory" msgid="151871913888051515">"Carte SD"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Mémoire de stockage interne"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"Mémoire de stockage USB"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"Carte SD"</string>
     <string name="memory_available" msgid="418542433817289474">"Espace disponible"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Insérer la carte SD à monter"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Monter la carte SD"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Monter la carte SD"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"Désactiver la carte SD"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Désinstaller mémoire USB interne"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Désinstaller la carte SD pour la retirer en toute sécurité"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Insérer mémoire USB à installer"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Insérer la carte SD à monter"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Monter stockage partagé"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Monter la carte SD"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Installer la mémoire USB interne"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Monter la carte SD"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Effacer la mémoire USB"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Effacer la carte SD"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Effacer les données de la mémoire USB interne (ex. : musique, photos)"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Effacer toutes les données de la carte SD, telles que la musique et les photos"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Non disponible"</string>
     <string name="read_only" msgid="6702420168629076340">" (Lecture seule)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Désactiver la carte SD"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Si vous désactivez la carte SD, certaines applications que vous utilisez s\'arrêteront et risquent de ne plus être disponibles tant que vous n\'aurez pas réactivé la carte SD."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Échec de la désactivation de la carte SD"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"Impossible de désactiver la carte SD. Réessayez ultérieurement."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"La carte SD sera désactivée. Pour connaître l\'état de la carte, consultez la zone de notification."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Désinstaller la mémoire de stockage USB"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Désactiver la carte SD"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Si vous désactivez la mémoire de stockage USB, certaines applications en cours d\'utilisation seront fermées. Elles risquent de rester indisponibles jusqu\'à ce que la mémoire de stockage USB soit réactivée."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Si vous désactivez la carte SD, certaines applications que vous utilisez s\'arrêteront et risquent de ne plus être disponibles tant que vous n\'aurez pas réactivé la carte SD."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Impossible de désinstaller USB"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Échec de la désactivation de la carte SD"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"Impossible de désinstaller la mémoire de stockage USB. Réessayez ultérieurement."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"Impossible de désactiver la carte SD. Réessayez ultérieurement."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"La mémoire de stockage USB va être désinstallée."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"La carte SD va être démontée."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Désactivation en cours"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Désactivation en cours"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"État de la batterie"</string>
@@ -541,7 +570,7 @@
     <string name="apn_not_set" msgid="7422262558097875757">"&lt;Non défini&gt;"</string>
     <string name="apn_name" msgid="4115580098369824123">"Nom"</string>
     <string name="apn_apn" msgid="2479425126733513353">"APN"</string>
-    <string name="apn_http_proxy" msgid="1826885957243696354">"Proxy "</string>
+    <string name="apn_http_proxy" msgid="1826885957243696354">"Proxy"</string>
     <string name="apn_http_port" msgid="3763259523984976226">"Port"</string>
     <string name="apn_user" msgid="455637547356117761">"Nom d\'utilisateur"</string>
     <string name="apn_password" msgid="5412301994998250968">"Mot de passe"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Réinitialisation des paramètres APN par défaut terminée"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Restaurer valeurs d\'usine"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Effacer toutes les données du téléphone"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Toutes les données de votre téléphone vont être supprimées, en particulier :"\n<li>"votre compte Google"</li>\n<li>"les paramètres et données des applications et du système "</li>\n<li>"les applications téléchargées"</li>\n"Les éléments suivants ne seront pas supprimés :"\n<li>"les logiciels système actuels et les applications pré-installées "</li>\n<li>"les fichiers présents sur la carte SD (par ex. photos et musique)"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Cette action effacera toutes les données de la mémoire de "<b>"stockage interne"</b>" de votre mobile, y compris :"\n\n<li>"Votre compte Google"</li>\n<li>"Les données et les paramètres des applications et du système"</li>\n<li>"Les applications téléchargées"</li>\n\n"Pour supprimer toutes les données de votre mobile, vous devez également effacer la mémoire de "<b>"stockage USB"</b>"."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Cette action effacera toutes les données du "<b>"stockage interne"</b>" de votre téléphone, notamment :"\n\n<li>"Votre compte Google"</li>\n<li>"Les données et les paramètres des applications et du système"</li>\n<li>"Les applications téléchargées"</li>\n\n"Pour supprimer également la musique, les photos et les autres données utilisateur, vous devez effacer la "<b>"carte SD"</b>"."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Effacer la mémoire USB"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Effacer la carte SD"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Effacer les données de la mémoire USB interne (ex. : musique, photos)."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Effacer les données de la carte SD (ex. : musique, photos)"</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Réinitialiser le téléphone"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Souhaitez-vous vraiment supprimer toutes vos informations personnelles et toutes les applications téléchargées ? Cette action ne peut pas être annulée."</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Tout effacer"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Saisissez votre schéma de déverrouillage"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Vous devez dessiner votre schéma de déverrouillage pour confirmer la réinitialisation du téléphone."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Les données n\'ont pas été réinitialisées car le service de nettoyage du système n\'est pas disponible."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Formater la carte SD."</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Permet d\'effacer toutes les données de la carte SD"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Cette action effacera la carte SD du téléphone. TOUTES les données de la carte seront perdues !"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Formater la carte SD"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Formater la carte SD en effaçant tout le contenu de la carte ? Impossible d\'annuler cette action !"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Effacer la mémoire USB"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Effacer la carte SD"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Efface les données de la mémoire USB"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Permet d\'effacer toutes les données de la carte SD"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Cette action effacera la mémoire de stockage USB. "<b>"Toutes"</b>" les données qu\'elle contient seront perdues."</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Cette action effacera la carte SD. "<b>"Toutes"</b>" les données de la carte seront perdues."</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Effacer la mémoire USB"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Effacer la carte SD"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"Effacer la mémoire de stockage USB en supprimant tous les fichiers qu\'elle contient ? Cette action est irréversible."</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"Effacer la carte SD en supprimant tous les fichiers qu\'elle contient ? Cette action est irréversible."</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Tout effacer"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Créez votre schéma de déverrouillage"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Vous devez créer votre schéma de déverrouillage pour confirmer le format de la carte SD."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Dessinez votre schéma de déverrouillage pour confirmer l\'effacement de la mémoire de stockage USB."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Vous devez créer votre schéma de déverrouillage pour confirmer l\'effacement de la carte SD."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Paramètres d\'appel"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Configurer mess. vocale, transferts d\'appel, mises en attente, numéro de l\'appelant"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Partage de connexion"</string>
@@ -598,7 +638,7 @@
     <string name="usb_tethering_button_text" msgid="585829947108007917">"Via USB"</string>
     <string name="usb_tethering_available_subtext" msgid="156779271296152605">"Connexion USB établie, cochez l\'option adéquate pour partager la connexion."</string>
     <string name="usb_tethering_active_subtext" msgid="8916210851136467042">"Partage de connexion en cours"</string>
-    <string name="usb_tethering_storage_active_subtext" msgid="6608933594288072573">"Impossible de partager la connexion lorsqu\'un stockage USB est utilisé."</string>
+    <string name="usb_tethering_storage_active_subtext" msgid="6608933594288072573">"Impossible de partager la connexion lorsqu\'une mémoire de stockage USB est utilisée."</string>
     <string name="usb_tethering_unavailable_subtext" msgid="1044622421184007254">"USB non connecté"</string>
     <string name="usb_tethering_errored_subtext" msgid="1377574819427841992">"Erreur liée au partage de connexion via USB"</string>
     <string name="tethering_help_button_text" msgid="656117495547173630">"Aide"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Afficher ma position dans les applications (comme Google Maps)"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Position géographique déterminée par réseaux Wi-Fi et/ou mobile"</string>
     <string name="location_gps" msgid="6296125378829097831">"Utiliser les satellites GPS"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Localisation à la rue près (décocher pour économiser la batterie)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Lors de la géolocalisation, localisation à la rue près"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Localiser au niveau rue (requiert + de batterie et une vue dégagée)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Utiliser le GPS assisté"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Utiliser le serveur pour assister le GPS (désactiver pour réduire l\'utilisation du réseau)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Application"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Données"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Désinstaller"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Désactiver"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Activer"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Effacer les données"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Désinstaller les mises à jour"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Vous avez choisi de lancer cette application par défaut pour certaines actions."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Aucun paramètre par défaut défini"</string>
     <string name="clear_activities" msgid="7408923511535174430">"Effacer les actions par défaut"</string>
     <string name="unknown" msgid="1592123443519355854">"Inconnu"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Trier"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Trier par nom"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Trier par taille"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Afficher les services"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Voir processus en cache"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Gérer l\'espace"</string>
     <string name="filter" msgid="2018011724373033887">"Filtrer"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Options du filtre"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Toutes"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Téléchargées"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"En cours d\'exécution"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"Sur la carte SD"</string>
-    <string name="loading" msgid="3200408047793887917">"Chargement..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"Mémoire de stockage USB"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"Sur la carte SD"</string>
+    <string name="disabled" msgid="9206776641295849915">"Désactivée"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Aucune application"</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Stockage interne"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"Mémoire USB"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"Carte SD"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Calcul de la taille..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Supprimer"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Toutes les données de cette application vont être définitivement supprimées, y compris tous les fichiers, les paramètres, les comptes, les bases de données, etc."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"version <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Déplacer"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Déplacer vers le téléphone"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Déplacer vers la carte SD"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Déplacer vers USB"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Déplacer vers la carte SD"</string>
     <string name="moving" msgid="6431016143218876491">"Déplacement en cours"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"L\'espace de stockage restant est insuffisant."</string>
     <string name="does_not_exist" msgid="837163572898468245">"Cette application n\'existe pas."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"L\'emplacement d\'installation indiqué n\'est pas valide."</string>
     <string name="system_package" msgid="1030561474413022831">"Les mises à jour du système ne peuvent pas être installées sur des supports externes."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Forcer l\'arrêt"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Cette application sera immédiatement redémarrée. Voulez-vous vraiment forcer sa fermeture ?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Êtes-vous sûr ? Forcer l\'arrêt d\'une application peut entraîner des dysfonctionnements."</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Déplacer l\'application"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Échec du déplacement de l\'application. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Emplacement d\'installation souhaité"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Modifiez l\'emplacement d\'installation par défaut pour les nouvelles applications."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Utilisation du stockage"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Afficher l\'espace de stockage utilisé par les applications"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Services en cours d\'exécution"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Afficher et contrôler les services en cours d\'exécution"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Redémarrage en cours"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Aucun service en cours d\'exécution"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Arrêter le service ?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"Le service ne sera plus exécuté tant qu\'il ne sera pas relancé. Cette configuration peut avoir des conséquences gênantes sur l\'application <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Arrêter"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Annuler"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Démarré par appl. : appuyez pr arrêter"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g> : appuyez dessus pour gérer le service."</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Disponible : <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> dans <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Autres : <xliff:g id="MEMORY">%2$s</xliff:g> dans <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Processus : <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Processus d\'arrière-plan en cache"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Pas de services en cours"</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Service démarré par l\'application"</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> gratuit"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> utilisé"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processus et <xliff:g id="NUMSERVICES">%2$d</xliff:g> service"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processus et <xliff:g id="NUMSERVICES">%2$d</xliff:g> services"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processus et <xliff:g id="NUMSERVICES">%2$d</xliff:g> service"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processus et <xliff:g id="NUMSERVICES">%2$d</xliff:g> services"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Application en cours d\'exécution"</string>
+    <string name="no_services" msgid="7133900764462288263">"Inactifs"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Services"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Processus"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Arrêter"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Paramètres"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Ce service a été démarré par son application. Si vous l\'arrêtez, cette dernière risque de se bloquer."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Impossible d\'arrêter correctement cette application. Si vous continuez, vous risquez de perdre une partie des travaux en cours."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Processus d\'une ancienne application conservé pour permettre une vitesse accrue si besoin. Il ne doit généralement pas être arrêté."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"En cours d\'utilisation : <xliff:g id="CLIENT_NAME">%1$s</xliff:g>. Appuyez sur Paramètres pour contrôler ce client."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Principal processus actuellement utilisé"</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Le service <xliff:g id="COMP_NAME">%1$s</xliff:g> est actuellement utilisé."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"L\'opérateur <xliff:g id="COMP_NAME">%1$s</xliff:g> est actuellement utilisé."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Arrêter le service système ?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Voulez-vous vraiment arrêter ce service système ? Si tel est le cas, certaines fonctionnalités risquent de ne plus fonctionner correctement tant que vous n\'aurez pas éteint, puis rallumé votre téléphone."</string>
     <string name="language_settings" msgid="502219872342167227">"Langue et clavier"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Paramètres de langue et clavier"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Définir la langue et la région, la saisie de texte et la correction automatique"</string>
-    <string name="language_category" msgid="3391756582724541530">"Paramètres régionaux"</string>
-    <string name="text_category" msgid="6342540511465136739">"Paramètres du texte"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Paramètres de langue"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Paramètres du clavier"</string>
     <string name="phone_language" msgid="1165758957501090679">"Sélectionner la langue"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Remplacement auto"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Test"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Informations sur le téléphone"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Informations sur la batterie"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Historique de la batterie"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Lancement rapide"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Configurer des raccourcis clavier pour lancer des applications"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Choisir une application"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Gérer les options de saisie de texte"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Paramètres <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Paramètres du clavier intégré"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Clavier de l\'appareil"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Paramètres du clavier intégré"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Clavier intégré"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Paramètres du clavier physique intégré"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Développement"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Définir les options pour le développement de l\'application"</string>
     <string name="enable_adb" msgid="7982306934419797485">"Débogage USB"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"Le débogage USB est conçu à des fins de développement uniquement. Il peut servir à copier des données entre votre ordinateur et votre appareil, à installer des applications sur votre appareil sans notification et à lire les données de journal."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Choisir un gadget"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Choisir un widget"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Détails de l\'UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Données d\'utilisation du réseau pour <xliff:g id="APP_NAME">%1$s</xliff:g> :"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Octets reçus : <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Octets envoyés :<xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Octets au total :<xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"Données d\'utilisation de l\'UC pour <xliff:g id="APP_NAME">%1$s</xliff:g> :"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Heure utilisateur :"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Heure système :"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Temps total :"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Démarrages : <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g> j <xliff:g id="HOURS">%2$d</xliff:g> h <xliff:g id="MINUTES">%3$d</xliff:g> mn <xliff:g id="SECONDS">%4$d</xliff:g> s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g> h <xliff:g id="MINUTES">%2$d</xliff:g> mn <xliff:g id="SECONDS">%3$d</xliff:g> s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g> mn <xliff:g id="SECONDS">%2$d</xliff:g> s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g> s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Paquets partageant cet UID :"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Aucune donnée sur l\'utilisation de la batterie disponible"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Capteur :"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Verrouillage en veille partielle :"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Capteur utilisé par les kits :"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Utilisé <xliff:g id="COUNT">%1$d</xliff:g> fois par <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Utilisé <xliff:g id="COUNT">%1$d</xliff:g> fois par l\'une des applications suivantes :"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"En cours d\'exécution"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Écran activé"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Téléphone allumé"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Autonomie sans mise en veille :"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Temps utilisé avec l\'écran activé :"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Autonomie avec le téléphone allumé :"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"Sur la batterie :"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Branchée :"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Données statistiques"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Données statistiques"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Trier par :"</string>
@@ -858,19 +901,26 @@
     <string name="accessibility_service_disable_warning" msgid="8930591383312775132">"Désactiver les services d\'accessibilité ?"</string>
     <string name="accessibility_service_no_apps_title" msgid="898893674114288531">"Aucune application d\'accessibilité n\'a été trouvée."</string>
     <string name="accessibility_service_no_apps_message" msgid="2450056749545404807">"Aucune application d\'accessibilité n\'est installée."\n\n"Vous pouvez télécharger un lecteur d\'écran pour votre périphérique depuis Android Market."\n\n"Cliquez sur OK pour installer le lecteur d\'écran."</string>
-    <string name="accessibility_power_button_category" msgid="8545885236482339928">"Bouton d\'alimentation"</string>
+    <string name="accessibility_power_button_category" msgid="8545885236482339928">"Bouton MARCHE-ARRÊT"</string>
     <string name="accessibility_power_button_ends_call" msgid="7698764194501089533">"Raccrocher pdt un appel"</string>
-    <string name="accessibility_power_button_ends_call_summary" msgid="8878097632186291462">"Lors d\'un appel, utiliser le bouton d\'alimentation pour raccrocher, sans désactiver l\'écran"</string>
+    <string name="accessibility_power_button_ends_call_summary" msgid="8878097632186291462">"Lors d\'un appel, utiliser le bouton MARCHE-ARRÊT pour raccrocher, sans désactiver l\'écran"</string>
     <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>
     <string name="battery_since_reset" msgid="7464546661121187045">"Utilisation de la batterie depuis la dernière réinitialisation"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"Sur la batterie : <xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"Débranché depuis <xliff:g id="TIME">%1$s</xliff:g>"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Batterie en charge"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Écran activé"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS activé"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"En activité"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Signal du téléphone"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Durée de fonctionnement de l\'appareil"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"Temps de fonctionnement du Wi-Fi"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"Temps de fonctionnement du Wi-Fi"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Wi-Fi/temps"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Wi-Fi à temps"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> -  <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Infos détaillées sur l\'utilisation de la batterie"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Détails d\'utilisation"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Téléphone inactif"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"UC - Durée totale"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"UC - Premier plan"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Maintenir activé"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Wi-Fi en cours d\'exécution"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Téléphone"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Données envoyées"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Données reçues"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Informations sur l\'application"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Paramètres des applications"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Paramètres d\'affichage"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Paramètres Wi-Fi"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Paramètres Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Paramètres Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Batterie utilisée par les appels vocaux"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Batterie utilisée lorsque le téléphone est inactif"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batterie utilisée par Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Désactivez Bluetooth lorsque vous ne l\'utilisez pas."</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Essayez de vous connecter à un autre appareil Bluetooth"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Batterie utilisée par les applications en cours d\'exécution"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Batterie utilisée par l\'application"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Arrêter ou désinstaller l\'application"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Désactivez le GPS lorsque vous ne l\'utilisez pas."</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Contrôlez manuellement le GPS pour éviter que l\'application ne l\'utilise."</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"L\'application dispose peut-être de paramètres permettant de réduire l\'utilisation de la batterie."</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"Débranché depuis <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Depuis le dernier débranchement (<xliff:g id="UNPLUGGED">%1$s</xliff:g>)"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Non installée"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Femme"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Homme"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Moteur synthèse vocale installé"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Activer le moteur avant util."</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Autoriser l\'accès des applications aux certificats sécurisés et identifiants"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Saisir le mot de passe"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Saisissez le mot de passe du stockage des identifiants."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Installer depuis la carte SD"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Installer les certificats cryptés depuis la carte SD"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Installation depuis USB"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Installer depuis la carte SD"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Installer certificats cryptés depuis mémoire USB"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Installer les certificats cryptés depuis la carte SD"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Définir le mot de passe"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Définir/modifier le mot de passe de stockage des identifiants"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Effacer le stockage"</string>
@@ -1068,6 +1124,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Système de fichiers cryptés"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Crypter les données utilisateur privées"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Activer le stockage des données utilisateur privées dans les systèmes de fichiers cryptés de ce périphérique"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Pour activer les systèmes de fichiers cryptés, vous devez disposer d\'un outil de nettoyage des données."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Pour désactiver des systèmes de fichiers cryptés, vous devez disposer d\'un outil de nettoyage des données."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Activer"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Désactiver"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Annuler"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"La modification apportée au mode Systèmes de fichiers cryptés a été annulée."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Avertissement relatif aux systèmes de fichiers cryptés"</string>
     <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>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Sauvegarder et restaurer"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Données personnelles"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Sauvegarder mes données"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Sauvegarder mes paramètres et autres données d\'application"</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Données d\'application de sauvegarde, mots de passe Wi-Fi et autres paramètres de serveurs Google"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Restaurer automatiquement"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Restaurer les paramètres ou autres données sauvegardées lorsqu\'une application est réinstallée"</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Restaurer les paramètres ou autres données sauvegardées lorsqu\'une application est réinstallée"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Sauvegarder"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Voulez-vous vraiment arrêter de sauvegarder vos paramètres et vos données d\'application, et supprimer toutes les copies des serveurs Google ?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Voulez-vous vraiment arrêter de sauvegarder vos mots de passe Wi-Fi, vos favoris ainsi que vos données et paramètres d\'application, et supprimer toutes les copies des serveurs Google ?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Paramètres d\'administration du périphérique"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Administrateur du périphérique"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Désactiver"</string>
diff --git a/res/values-it/arrays.xml b/res/values-it/arrays.xml
index 4954dd4..138a100 100644
--- a/res/values-it/arrays.xml
+++ b/res/values-it/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Mai quando collegato"</item>
     <item msgid="1986753720941888596">"Mai"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"Utilizzo CPU"</item>
-    <item msgid="6401018715947316517">"Utilizzo della rete"</item>
-    <item msgid="188092590354892392">"Utilizzo GPS"</item>
-    <item msgid="8414109131222049141">"Utilizzo sensore"</item>
-    <item msgid="1327904325081257093">"Utilizzo riattivazione parziale"</item>
-    <item msgid="4832254146664706277">"Altro utilizzo"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Da ultimo scollegamento"</item>
-    <item msgid="166936313535197598">"Totale dall\'avvio"</item>
-    <item msgid="4793941382744963893">"Totale generale"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Tempo di utilizzo"</item>
     <item msgid="1908750532762193304">"Conteggio avvii"</item>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 56f980b..b021a71 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"Sistema di identificazione contenuti"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Smonta scheda SD"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Formatta scheda SD"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Smonta archivio USB"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Smonta scheda SD"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Cancella archivio USB"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Cancella scheda SD"</string>
     <string name="small_font" msgid="2295331917424072635">"Piccole"</string>
     <string name="medium_font" msgid="2068475425515133701">"Medie"</string>
     <string name="large_font" msgid="599055175160971446">"Grandi"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"Scheda SD"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Archivio USB"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Scheda SD"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Stato batteria:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Presa di corrente:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Scala batteria:"</string>
@@ -120,7 +123,7 @@
     <string name="date_time_changeTime_text" msgid="7037437020000867740">"Modifica ora"</string>
     <string name="date_time_changeDate_text" msgid="5259762626498028057">"Data"</string>
     <string name="choose_timezone" msgid="7762866468013985022">"Seleziona fuso orario"</string>
-    <string name="normal_date_format" msgid="1982904221918374153">"Normale (<xliff:g id="DATE">%s</xliff:g>)\n"</string>
+    <string name="normal_date_format" msgid="1982904221918374153">"Normale (<xliff:g id="DATE">%s</xliff:g>)"</string>
     <string name="display_preview_label" msgid="1127597250917274792">"Anteprima:"</string>
     <string name="display_font_size_label" msgid="8941851418397475389">"Dimensioni carattere:"</string>
     <!-- no translation found for intent_sender_data_label (6332324780477289261) -->
@@ -178,29 +181,36 @@
     <string name="band_mode_failed" msgid="1495968863884716379">"Non riuscita"</string>
     <string name="band_mode_succeeded" msgid="2701016190055887575">"Riuscita"</string>
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Le modifiche saranno effettive alla riconnessione del cavo USB"</string>
-    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Attiva archiviazione di massa USB"</string>
+    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Attiva archivio di massa USB"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Byte totali:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Nessuna scheda SD"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"Archivio USB non montato"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Nessuna scheda SD"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Byte disponibili:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"Scheda SD in uso come dispositivo di archiviazione di massa"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"È ora possibile rimuovere la scheda SD"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"La scheda SD è stata rimossa quando ancora in uso."</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"Archivio USB usato come disp. di archiviaz. di massa"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"Scheda SD in uso come dispositivo di archiviazione di massa"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"È possibile rimuovere l\'archivio USB"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"È ora possibile rimuovere la scheda SD"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"Archivio USB rimosso quando ancora in uso."</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"La scheda SD è stata rimossa quando ancora in uso."</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Byte utilizzati:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Ricerca di media nella scheda SD..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"La scheda SD montata è di sola lettura"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Ricerca di media in archivio USB…"</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Ricerca di media nella scheda SD..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"Arch. USB montato: sola lettura"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"La scheda SD montata è di sola lettura"</string>
     <string name="next_label" msgid="4693520878012668114">"Avanti"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Impostazioni internazionali"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Seleziona la lingua"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Seleziona attività"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Info dispositivo"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Info batteria"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Cronologia batteria"</string>
     <string name="display_label" msgid="7403874003169865762">"Display"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Info telefono"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"Scheda SD"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"Archivio USB"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"Scheda SD"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Impostazioni proxy"</string>
     <string name="cancel" msgid="6859253417269739139">"Annulla"</string>
     <string name="settings_label" msgid="1626402585530130914">"Impostazioni"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Impostazioni"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Impostazioni"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Modalità aereo"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Disattiva tutte le connessioni wireless"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Come vivavoce"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Per musica e audio media"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Ricorda impostazioni"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Usa Near Field Communication per leggere e scambiare tag"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Attiva Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Impostazioni Wi-Fi"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Specifica quando passare da Wi-Fi a dati cellulare"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Errore durante l\'impostazione dei criteri di sospensione."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"Indirizzo MAC"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"Indirizzo IP"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"Impostazioni IP"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Salva"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Annulla"</string>
@@ -481,7 +497,7 @@
     <string name="sim_pins_dont_match" msgid="4664611595579163214">"I PIN non corrispondono."</string>
     <string name="sim_change_failed" msgid="4823538458798362222">"Impossibile cambiare il PIN."\n"Il PIN potrebbe essere errato."</string>
     <string name="sim_change_succeeded" msgid="8556135413096489627">"PIN della SIM modificato"</string>
-    <string name="sim_lock_failed" msgid="6676748290838006404">\n"Impossibile modificare lo stato di blocco della SIM."\n"Il PIN potrebbe essere errato."</string>
+    <string name="sim_lock_failed" msgid="6676748290838006404">\n"Impossibile modificare lo stato di blocco della SIM.BREAKIl PIN potrebbe essere errato."</string>
     <string name="sim_enter_ok" msgid="6475946836899218919">"OK"</string>
     <string name="sim_enter_cancel" msgid="6240422158517208036">"Annulla"</string>
     <string name="device_info_settings" msgid="475872867864762157">"Stato telefono"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Stato"</string>
     <string name="device_status" msgid="607405385799807324">"Stato"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Numero di telefono, segnale ecc."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"Scheda SD e memoria"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Impostazioni scheda SD e memoria"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Smonta la scheda SD, visualizza spazio di archiviazione disponibile"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Memoria"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Impostazioni di archiviazione"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Smonta l\'archivio USB, visualizza lo spazio di archiviazione disponibile"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Smonta la scheda SD, visualizza spazio di archiviazione disponibile"</string>
     <string name="status_number" msgid="5123197324870153205">"Il mio numero di telefono"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"Versione PRL"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Non disponibile"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Tempo di attività"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Tempo di attività"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Archiviazione interna telefono"</string>
-    <string name="sd_memory" msgid="151871913888051515">"Scheda SD"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Archivio interno"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"Archivio USB"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"Scheda SD"</string>
     <string name="memory_available" msgid="418542433817289474">"Spazio disponibile"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Inserisci una scheda SD da montare"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Installa scheda SD"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Installa la scheda SD"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"Smonta scheda SD"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Smonta archivio USB interno"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Smonta la scheda SD per poterla rimuovere in tutta sicurezza"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Inserisci arch. USB da montare"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Inserisci una scheda SD da montare"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Monta archivio condiviso"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Installa scheda SD"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Monta archivio USB interno"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Installa la scheda SD"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Cancella archivio USB"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Cancella scheda SD"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Cancella i dati nell\'archivio USB interno del telefono, come musica e foto"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Cancella tutti i dati sulla scheda SD del telefono, come musica e foto"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Non disponibile"</string>
     <string name="read_only" msgid="6702420168629076340">" (Sola lettura)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Smonta scheda SD"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Se smonti la scheda SD, alcune applicazioni in uso si bloccheranno e potrebbero risultare non disponibili finché non rimonterai la scheda SD."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Smontaggio scheda SD non riuscito"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"Impossibile smontare la scheda SD. Riprova più tardi."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"La scheda SD verrà smontata. Verifica lo stato nell\'area di notifica."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Smonta archivio USB"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Smonta scheda SD"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Se smonti l\'archivio USB, alcune applicazioni in uso si bloccheranno e potrebbero risultare non disponibili finché non rimonterai l\'archivio USB."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Se smonti la scheda SD, alcune applicazioni in uso si bloccheranno e potrebbero risultare non disponibili finché non rimonterai la scheda SD."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Archivio USB non smontato"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Smontaggio scheda SD non riuscito"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"Impossibile smontare l\'archivio USB. Riprova più tardi."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"Impossibile smontare la scheda SD. Riprova più tardi."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"L\'archivio USB verrà smontato."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"La scheda SD condiviso verrà smontata."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Smontaggio in corso"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Smontaggio in corso"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Stato batteria"</string>
@@ -541,7 +570,7 @@
     <string name="apn_not_set" msgid="7422262558097875757">"&lt;Non impostato&gt;"</string>
     <string name="apn_name" msgid="4115580098369824123">"Nome"</string>
     <string name="apn_apn" msgid="2479425126733513353">"APN"</string>
-    <string name="apn_http_proxy" msgid="1826885957243696354">"Proxy "</string>
+    <string name="apn_http_proxy" msgid="1826885957243696354">"Proxy"</string>
     <string name="apn_http_port" msgid="3763259523984976226">"Porta"</string>
     <string name="apn_user" msgid="455637547356117761">"Nome utente"</string>
     <string name="apn_password" msgid="5412301994998250968">"Password"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Ripristino delle impostazioni APN predefinite completato"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Ripristino dati di fabbrica"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Cancella tutti i dati sul telefono"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Questa operazione cancellerà tutti i dati del cellulare, compresi:"\n<li>"Il tuo account Google"</li>\n<li>"Dati e impostazioni del sistema e delle applicazioni"</li>\n<li>"Applicazioni scaricate"</li>\n"Non cancellerà:"\n<li>"Attuale software del sistema e applicazioni integrate"</li>\n<li>"File della scheda SD, come musica o foto"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Questa operazione cancellerà tutti i dati dall\'"<b>"archivio interno"</b>" del telefono, compresi:"\n\n<li>"Il tuo account Google"</li>\n<li>"Dati e impostazioni di sistema e delle applicazioni"</li>\n<li>"Applicazioni scaricate"</li>\n\n"Per cancellare tutti i dati su questo telefono, è necessario cancellare l\'"<b>"archivio USB"</b>"."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Questa operazione cancellerà tutti i dati dall\'"<b>"archivio interno"</b>" del telefono, compresi:"\n\n<li>"Il tuo account Google"</li>\n<li>"Dati e impostazioni di sistema e delle applicazioni"</li>\n<li>"Applicazioni scaricate"</li>\n\n"Per cancellare anche musica, foto e altri dati utente, è necessario cancellare la "<b>"scheda SD"</b>"."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Cancella archivio USB"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Cancella scheda SD"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Cancella i dati nell\'archivio USB interno del telefono, come musica o foto."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Cancella i dati sulla scheda SD del telefono, come musica o foto"</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Ripristina telefono"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Cancellare tutte le tue informazioni personali e qualsiasi applicazione scaricata? Sarà impossibile annullare questa azione."</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Cancella tutto"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Inserisci la sequenza di sblocco"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Per confermare un ripristino del telefono occorre inserire la sequenza di sblocco."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Nessun ripristino eseguito perché il servizio System Clear non è disponibile."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Formatta scheda SD."</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Cancella tutti i dati sulla scheda SD"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Questa azione cancellerà TUTTI i dati della scheda SD del telefono, che andranno persi."</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Formatta scheda SD"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Formattare la scheda SD, cancellando tutti i media? Questa azione è irreversibile."</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Cancella archivio USB"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Cancella scheda SD"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Cancella i dati nell\'arch. USB"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Cancella tutti i dati sulla scheda SD"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Questa azione cancellerà l\'archivio USB. "<b>"Tutti"</b>" i dati memorizzati al suo interno andranno persi."</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Questa azione cancellerà la scheda SD. "<b>"Tutti"</b>" i dati sulla scheda SD andranno persi."</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Cancella archivio USB"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Cancella scheda SD"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"Cancellare l\'archivio USB, eliminando tutti i file memorizzati al suo interno? Questa azione è irreversibile."</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"Cancellare la scheda SD, eliminando tutti i file memorizzati al suo interno? Questa azione è irreversibile."</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Cancella tutto"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Inserisci la sequenza di sblocco"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Per confermare la formattazione della scheda SD devi inserire la sequenza di sblocco."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Devi inserire la sequenza di sblocco per confermare che desideri cancellare l\'archivio USB."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Devi inserire la sequenza di sblocco per confermare che desideri cancellare la scheda SD."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Impostazioni chiamate"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Imposta segreteria, deviazione chiamate, avviso di chiamata, ID chiamante"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Tethering"</string>
@@ -598,7 +638,7 @@
     <string name="usb_tethering_button_text" msgid="585829947108007917">"Tethering USB"</string>
     <string name="usb_tethering_available_subtext" msgid="156779271296152605">"USB collegata, seleziona per impostare tethering"</string>
     <string name="usb_tethering_active_subtext" msgid="8916210851136467042">"Con tethering"</string>
-    <string name="usb_tethering_storage_active_subtext" msgid="6608933594288072573">"Tethering non possibile quando è in uso la memorizzazione USB"</string>
+    <string name="usb_tethering_storage_active_subtext" msgid="6608933594288072573">"Tethering non possibile quando è in uso l\'archivio USB"</string>
     <string name="usb_tethering_unavailable_subtext" msgid="1044622421184007254">"USB non connessa"</string>
     <string name="usb_tethering_errored_subtext" msgid="1377574819427841992">"Errore tethering USB"</string>
     <string name="tethering_help_button_text" msgid="656117495547173630">"Guida"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Visualizza la posizione nelle applicazioni (ad esempio Maps) utilizzando le reti wireless"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Posizione determinata dalle reti mobili e/o Wi-Fi"</string>
     <string name="location_gps" msgid="6296125378829097831">"Utilizza satelliti GPS"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Accuratezza a livello stradale (deseleziona per risparmiare batteria)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Nel rilevamento della posizione, precisione a livello stradale"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Localizza a livello stradale (richiede più batteria e la vista del cielo)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Utilizza GPS assistito"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Utilizza il server per assistere il GPS (deseleziona per ridurre l\'utilizzo della rete)"</string>
@@ -692,29 +732,38 @@
     <string name="application_size_label" msgid="5055196275624686382">"Applicazione"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Dati"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Disinstalla"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Disattiva"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Attiva"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Cancella dati"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Disinstalla aggiornamenti"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Hai scelto di avviare per impostazione predefinita questa applicazione per alcune azioni."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Nessuna applicazione predefinita impostata."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Cancella predefinite"</string>
     <string name="unknown" msgid="1592123443519355854">"Sconosciuta"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Ordina"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Ordina per nome"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Ordina per dimensioni"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Mostra servizi in esecuzione"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Mostra processi nella cache"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Gestisci spazio"</string>
     <string name="filter" msgid="2018011724373033887">"Filtra"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Seleziona opzioni di filtro"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Tutte"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Scaricate"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"In esecuzione"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"Scheda SD"</string>
-    <string name="loading" msgid="3200408047793887917">"Caricamento..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"Archivio USB"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"Scheda SD"</string>
+    <string name="disabled" msgid="9206776641295849915">"Disattivato"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Nessuna applicazione."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Archivio interno"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"Archivio USB"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"Arch. scheda SD"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Ricalcolo dimensioni..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Elimina"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Tutti i dati dell\'applicazione verranno eliminati definitivamente, inclusi tutti i file, le impostazioni, gli account, i database e così via."</string>
     <string name="dlg_ok" msgid="2402639055725653590">"OK"</string>
     <string name="dlg_cancel" msgid="1674753358972975911">"Annulla"</string>
     <string name="app_not_found_dlg_title" msgid="8458335716378083713">"Applicazione non trovata"</string>
-    <string name="app_not_found_dlg_text" msgid="2980271680333341554">"Impossibile trovare l\'applicazione \nnell\'elenco di applicazioni installate."</string>
+    <string name="app_not_found_dlg_text" msgid="2980271680333341554">"Impossibile trovare l\'applicazione nell\'elenco di applicazioni installate."</string>
     <string name="clear_data_failed" msgid="581956197586913865">"Impossibile cancellare i dati dell\'applicazione."</string>
     <string name="app_factory_reset_dlg_title" msgid="6116199391150388147">"Disinstalla aggiornamenti"</string>
     <string name="app_factory_reset_dlg_text" msgid="438395129140568893">"Disinstallare tutti gli aggiornamenti di questa applicazione di sistema Android?"</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"versione <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Sposta"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Sposta sul telefono"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Sposta su scheda SD"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Sposta in archivio USB"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Sposta su scheda SD"</string>
     <string name="moving" msgid="6431016143218876491">"Spostamento"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Spazio di archiviazione rimanente insufficiente."</string>
     <string name="does_not_exist" msgid="837163572898468245">"Applicazione inesistente."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"Il percorso di installazione specificato non è valido."</string>
     <string name="system_package" msgid="1030561474413022831">"Impossibile installare aggiornamenti di sistema su supporti esterni."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Termina"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Questa applicazione verrà riavviata immediatamente. Procedere con l\'interruzione forzata?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Terminare un\'applicazione in modo forzato può causarne il cattivo funzionamento. Sicuro?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Sposta applicazione"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Spostamento applicazione non riuscito. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Percorso di installazione"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Cambia il percorso preferito per l\'installazione di nuove applicazioni."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Utilizzo memoria"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Visualizza la memoria utilizzata dalle applicazioni"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Servizi in esecuzione"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Visualizza e controlla i servizi attualmente in esecuzione"</string>
     <string name="service_restarting" msgid="2242747937372354306">"In fase di riavvio"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Nessun servizio in esecuzione"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Interrompere il servizio?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"Il servizio non verrà più eseguito fino al riavvio. Questa operazione potrebbe avere conseguenze indesiderate sull\'applicazione <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Interrompi"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Annulla"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Avviato dall\'applicaz.: tocca per interr."</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: tocca per la gestione"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Disponibile: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> in <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Altro: <xliff:g id="MEMORY">%2$s</xliff:g> in <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Processo: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Processo in background memorizzato nella cache"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Niente in esecuzione."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Avviato dall\'applicazione."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> libera"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> usata"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processo e <xliff:g id="NUMSERVICES">%2$d</xliff:g> servizio"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processo e <xliff:g id="NUMSERVICES">%2$d</xliff:g> servizi"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processi e <xliff:g id="NUMSERVICES">%2$d</xliff:g> servizio"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processi e <xliff:g id="NUMSERVICES">%2$d</xliff:g> servizi"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Applicazione in esecuzione"</string>
+    <string name="no_services" msgid="7133900764462288263">"Non attivi"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Servizi"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Processi"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Interrompi"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Impostazioni"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Questo servizio è stato avviato dalla sua applicazione. L\'interruzione potrebbe bloccare l\'applicazione."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Questa applicazione non può essere interrotta in modo sicuro. Procedendo potresti perdere parte del lavoro corrente."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Questo è un vecchio processo di un\'applicazione che è stato mantenuto per migliorare la velocità in caso di necessità. In genere non c\'è motivo per arrestarlo."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: attualmente in uso. Tocca Impostazioni per controllare."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Il processo principale in uso."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Il servizio <xliff:g id="COMP_NAME">%1$s</xliff:g> è in uso."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Il provider <xliff:g id="COMP_NAME">%1$s</xliff:g> è in uso."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Interrompere il servizio di sistema?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Interrompere questo servizio di sistema? Tale operazione potrebbe comportare anomalie in alcune funzioni del telefono fino ai successivi spegnimento e riaccensione."</string>
     <string name="language_settings" msgid="502219872342167227">"Lingua e tastiera"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Impostazioni lingua e tastiera"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Impostazioni internazionali (lingua e regione), di inserimento e correzione automatica del testo"</string>
-    <string name="language_category" msgid="3391756582724541530">"Impostazioni lingua"</string>
-    <string name="text_category" msgid="6342540511465136739">"Impostazioni testo"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Impostazioni lingua"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Impostazioni tastiera"</string>
     <string name="phone_language" msgid="1165758957501090679">"Seleziona lingua"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Sostituzione automatica"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Verifica in corso"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Informazioni telefono"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Informazioni batteria"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Cronologia batteria"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Avvio rapido"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Imposta scorciatoie da tastiera per avviare le applicazioni"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Assegna applicazione"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Gestisci opzioni inserimento testo"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Impostazioni di <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Impostazioni tastiera sullo schermo"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Tastiera dispositivo"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Impostazioni tastiera incorporate"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Impostazioni tastiera incorporate"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Impostazioni tastiera fisica incorporate"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Sviluppo"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Imposta opzioni per lo sviluppo di applicazioni"</string>
     <string name="enable_adb" msgid="7982306934419797485">"Debug USB"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"Il debug USB è solo a scopo di sviluppo. Può servire per copiare dati tra il computer e il dispositivo, per installare applicazioni sul tuo dispositivo senza notifica e per leggere i dati dei log."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Scegli gadget"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Scegli widget"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Dettagli per UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Dettagli di utilizzo della rete per <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Byte ricevuti: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Byte inviati: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Byte totali: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"Dettagli di utilizzo della CPU per <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Tempo utente:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Tempo sistema:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Tempo totale:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Avvii: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g> g <xliff:g id="HOURS">%2$d</xliff:g> h <xliff:g id="MINUTES">%3$d</xliff:g> m <xliff:g id="SECONDS">%4$d</xliff:g> s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g> h <xliff:g id="MINUTES">%2$d</xliff:g> m <xliff:g id="SECONDS">%3$d</xliff:g> s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g> m <xliff:g id="SECONDS">%2$d</xliff:g> s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g> s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Pacchetti che condividono questo UID:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Dati sull\'utilizzo della batteria non disponibili"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Sensore:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Wakelock parziale:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Sensore usato dai pacchetti:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Usato <xliff:g id="COUNT">%1$d</xliff:g> volte da <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Usato <xliff:g id="COUNT">%1$d</xliff:g> volte da uno di:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"In esecuzione"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Schermo acceso"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Cellulare acceso"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Tempo trascorso senza sospensione:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Tempo trascorso con schermo acceso:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Tempo trascorso con cellulare acceso:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"A batteria:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Collegato:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Statistiche di utilizzo"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Statistiche di utilizzo"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Ordina per:"</string>
@@ -865,12 +908,19 @@
     <string name="power_usage_summary" msgid="7237084831082848168">"Consumo batteria"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Utilizzo batteria dallo scollegamento"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"Utilizzo batteria dal ripristino"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> con la batteria"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> dallo scollegamento"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"In carica"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Schermo acceso"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS attivo"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Attivo"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Segnale telefono"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Tempo di attività dispositivo"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"Tempo accensione Wi-Fi"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"Tempo accensione Wi-Fi"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Tempo accensione Wi-Fi"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Tempo accensione Wi-Fi"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> -  <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Dettagli utilizzo batteria"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Dettagli di utilizzo"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Telefono inattivo"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"Totale CPU"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPU in primo piano"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Mantieni attivo"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Wi-Fi attivo"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Telefono"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Dati inviati"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Dati ricevuti"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Info applicazione"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Impostazioni applicazione"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Impostazioni display"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Impostazioni Wi-Fi"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Impostazioni Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Impostazioni Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Batteria utilizzata da chiamate vocali"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Utilizzo batteria quando il telefono è inattivo"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batteria utilizzata da Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Disattiva Bluetooth quando non è in uso"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Prova a connetterti a un altro dispositivo Bluetooth"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Batteria utilizzata dalle applicazioni in esecuzione"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Batteria utilizzata dall\'applicazione"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Interrompi o disinstalla l\'applicazione"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Disattiva GPS quando non è in uso"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Controlla manualmente il GPS per impedire all\'applicazione di utilizzarlo"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"L\'applicazione potrebbe offrire impostazioni per ridurre l\'utilizzo della batteria"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> dallo scollegamento"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Durante ultimo scollegamento per <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Non installata"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Femminile"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Maschile"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Motore sintesi vocale installato"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Attiva nuovo motore per usarlo"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Consenti accesso applicazioni a certificati protezione e altre credenziali"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Inserisci password"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Inserisci la password dell\'archivio di credenziali."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Installa da scheda SD"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Installa certificati crittografati da scheda SD"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Installa da archivio USB"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Installa da scheda SD"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Installa certificati crittografati da arch. USB"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Installa certificati crittografati da scheda SD"</string>
     <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>
@@ -1068,6 +1124,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"File system crittografato"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Crittografa dati privati utente"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Abilita l\'archiviazione dei file system crittografati per i dati privati dell\'utente in questo dispositivo"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Per l\'attivazione dei file system crittografati è necessaria la cancellazione dei dati del dispositivo."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Per la disattivazione dei file system crittografati è necessaria la cancellazione dei dati del dispositivo."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Attiva"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Disattiva"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Annulla"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Modifica della modalità dei file system crittografati annullata."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Avviso file system crittografati."</string>
     <string name="emergency_tone_title" msgid="1055954530111587114">"Tono chiamate 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>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Backup e ripristino"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Dati personali"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Backup dei miei dati"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Backup delle mie impostazioni e di altri dati delle applicazioni."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Effettua il backup di dati delle applicazioni, password Wi-Fi e altre impostazioni sui server di Google"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Ripristino automatico"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Se reinstallo un\'applicazione, ripristina le impostazioni o altri dati di backup."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Se reinstallo un\'applicazione, ripristina le impostazioni o altri dati di backup"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Copia di backup"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Interrompere il backup delle impostazioni e dei dati delle applicazioni e cancellare tutte le copie sui server Google?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Interrompere il backup delle password Wi-Fi, dei segnalibri, di altre impostazioni e dei dati delle applicazioni e cancellare tutte le copie sui server di Google?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Impostazioni di amministrazione dispositivo"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Amministratore dispositivo"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Disattiva"</string>
diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml
index b508452..3524fc5 100644
--- a/res/values-ja/arrays.xml
+++ b/res/values-ja/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"電源接続時はスリープにしない"</item>
     <item msgid="1986753720941888596">"スリープにしない"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"CPU使用状況"</item>
-    <item msgid="6401018715947316517">"ネットワーク使用状況"</item>
-    <item msgid="188092590354892392">"GPS使用状況"</item>
-    <item msgid="8414109131222049141">"センサー使用状況"</item>
-    <item msgid="1327904325081257093">"部分起動状況"</item>
-    <item msgid="4832254146664706277">"その他の使用状況"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"充電池使用時間"</item>
-    <item msgid="166936313535197598">"起動時間合計"</item>
-    <item msgid="4793941382744963893">"総時間"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"使用時間"</item>
     <item msgid="1908750532762193304">"起動回数"</item>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 0642299..85c527c 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"SDカードのマウント解除"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"SDカードをフォーマット"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"USBストレージのマウント解除"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"SDカードのマウント解除"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"USBストレージ内データの消去"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"SDカード内データを消去"</string>
     <string name="small_font" msgid="2295331917424072635">"小"</string>
     <string name="medium_font" msgid="2068475425515133701">"中"</string>
     <string name="large_font" msgid="599055175160971446">"大"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"SDカード"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USBストレージ"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SDカード"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"充電状況"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"電源:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"電池の残量表示:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"USBケーブルの再接続時に変更が有効になります"</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"USBマスストレージを有効にする"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"合計バイト数:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"SDカードがありません"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"USBストレージがマウントされていません"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"SDカードがありません"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"利用可能バイト数:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"SDカードをマスストレージデバイスとして使用中"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"SDカードを安全に取り外せます"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"SDカードが使用中に取り外されました。"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USBストレージをマスストレージデバイスとして使用中"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"SDカードをマスストレージデバイスとして使用中"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"USBストレージを安全に取り外せます"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"SDカードを安全に取り外せます"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"USBストレージが使用中に取り外されました"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"SDカードが使用中に取り外されました。"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"使用済みバイト数:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"メディア用のSDカードをスキャン中..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"読み取り専用としてSDカードをマウントしました"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"USBストレージをスキャン中..."</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"メディア用のSDカードをスキャン中..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"USBストレージを読取専用でマウント済み"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"読み取り専用としてSDカードをマウントしました"</string>
     <string name="next_label" msgid="4693520878012668114">"次へ"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"地域/言語"</string>
     <string name="select_your_language" msgid="1146235168951906084">"言語を選択"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"操作の選択"</string>
     <string name="device_info_label" msgid="6551553813651711205">"端末情報"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"電池情報"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"充電池データ"</string>
     <string name="display_label" msgid="7403874003169865762">"ディスプレイ"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"携帯電話情報"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"SDカード"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USBストレージ"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SDカード"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"プロキシ設定"</string>
     <string name="cancel" msgid="6859253417269739139">"キャンセル"</string>
     <string name="settings_label" msgid="1626402585530130914">"設定"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"設定"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"設定"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"機内モード"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"ワイヤレス接続をすべて無効にする"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"スピーカーフォン"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"音楽とメディア"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"設定を保存"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"タグの読み取りと交換にNFCを使用"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Wi-FiをONにする"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Wi-Fi設定"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Wi-Fiをスリープに切り替えるタイミング"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"スリープポリシーの設定で問題が発生しました。"</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MACアドレス"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IPアドレス"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"IP設定"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"保存"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"キャンセル"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"端末の状態"</string>
     <string name="device_status" msgid="607405385799807324">"端末の状態"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"電話番号、電波状態など"</string>
-    <string name="storage_settings" msgid="6681164315506788024">"SDカードと端末容量"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"SDカードと端末容量の設定"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"SDカードの取り外し、空き容量の表示"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"ストレージ"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"ストレージの設定"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"USBストレージのマウントを解除し、使用できるストレージを表示"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"SDカードの取り外し、空き容量の表示"</string>
     <string name="status_number" msgid="5123197324870153205">"電話番号"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"PRLバージョン"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"不明"</string>
     <string name="status_up_time" msgid="7294859476816760399">"稼働時間"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"端末使用時間"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"端末内部メモリ"</string>
-    <string name="sd_memory" msgid="151871913888051515">"SDカード"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"内部ストレージ"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"USBストレージ"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"SDカード"</string>
     <string name="memory_available" msgid="418542433817289474">"空き容量"</string>
     <string name="memory_size" msgid="6629067715017232195">"合計容量"</string>
-    <string name="sd_eject" msgid="6915293408836853020">"SDカードのマウント解除"</string>
-    <string name="sd_eject_summary" msgid="3315557796211542962">"SDカードを安全に取り外すためマウントを解除する"</string>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"マウントするSDカードを挿入"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"SDカードをマウント"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"SDカードをマウント"</string>
-    <string name="sd_format" msgid="5448738337382712203">"SDカードをフォーマット"</string>
-    <string name="sd_format_summary" msgid="6616491027883134004">"SDカードをフォーマット(消去)する"</string>
+    <string name="sd_eject" product="default" msgid="6915293408836853020">"SDカードのマウント解除"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"内部USBストレージのマウント解除"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"SDカードのマウント解除(安全な取り外し)"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"マウントするUSBストレージを挿入"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"マウントするSDカードを挿入"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"共有ストレージをマウント"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"SDカードをマウント"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"内部USBストレージのマウント"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"SDカードをマウント"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"USBストレージ内データを消去"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"SDカード内データを消去"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"内部USBストレージ内の全データ(音楽、写真など)を消去します。"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"SDカード内の全データ(音楽、写真など)の消去"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"使用不可"</string>
     <string name="read_only" msgid="6702420168629076340">" (読み取り専用)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"SDカードのマウント解除"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"SDカードのマウントを解除すると、使用中のアプリケーションの一部が停止し、SDカードを再マウントするまで使用できなくなる場合があります。"</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"SDカードのマウントを解除できません"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"SDカードのマウントを解除できません。しばらくしてからもう一度お試しください。"</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"SDカードのマウントを解除します。ステータスは通知エリアで確認してください。"</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"USBストレージのマウント解除"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"SDカードのマウント解除"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"USBストレージのマウントを解除すると、使用中のアプリケーションの一部が停止し、USBストレージを再マウントするまで使用できなくなる場合があります。"</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"SDカードのマウントを解除すると、使用中のアプリケーションの一部が停止し、SDカードを再マウントするまで使用できなくなる場合があります。"</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"USBストレージマウント解除失敗"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"SDカードのマウントを解除できません"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"USBストレージのマウントを解除できません。しばらくしてからもう一度お試しください。"</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"SDカードのマウントを解除できません。しばらくしてからもう一度お試しください。"</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"USBストレージのマウントが解除されます。"</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"SDカードのマウントが解除されます。"</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"マウント解除中"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"マウントを解除中"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"電池の状態:"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"APN設定をリセットしました"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"データの初期化"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"携帯電話内のすべてのデータを消去"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"この操作を行うと携帯のデータすべてが削除されます。消去されるデータには次のものがあります: "\n<li>"Googleアカウント"</li>\n<li>"システムやアプリケーションのデータと設定"</li>\n<li>"ダウンロードされたアプリケーション"</li>\n"この操作を行っても次のデータは削除されません: "\n<li>"既存のシステムソフトウェアやバンドルされているアプリケーション"</li>\n<li>"SDカードファイル(音楽や写真など)"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"この操作を行うと、携帯端末の"<b>"内部ストレージ"</b>"から次のデータがすべて消去されます:"\n\n<li>"Googleアカウント"</li>\n<li>"システムとアプリケーションのデータと設定"</li>\n<li>"ダウンロードされたアプリケーション"</li>\n\n"端末上のすべてのデータを削除するには、"<b>"USBストレージ"</b>"内のデータを消去する必要があります。"\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"この操作を行うと、携帯端末の"<b>"内部ストレージ"</b>"から次のデータがすべて消去されます:"\n\n<li>"Googleアカウント"</li>\n<li>"システムとアプリケーションのデータと設定"</li>\n<li>"ダウンロードされたアプリケーション"</li>\n\n"音楽や写真などユーザーデータも削除するには、"<b>"SDカード"</b>"内のデータを消去する必要があります。"\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"USBストレージ内データの消去"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"SDカード内データを消去"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"内部USBストレージ内の全データ(音楽、写真など)を消去します。"</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"SDカード内の全データ(音楽、写真など)を消去します。"</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"携帯電話をリセット"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"個人情報とダウンロードしたアプリケーションをすべて削除しますか?この操作を元に戻すことはできません。"</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"すべて消去"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"ロック解除パターンを入力してください"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"携帯電話をリセットするには、ロック解除パターンを入力する必要があります。"</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"System Clearサービスが利用できないため、リセットされませんでした。"</string>
-    <string name="media_format_title" msgid="4671276096695789895">"SDカードをフォーマットします。"</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"SDカードのすべてのデータを消去します"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"この操作を実行すると端末のSDカードが消去されます。カード内のすべてのデータが失われます。"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"SDカードをフォーマット"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"メディアをすべて消去してSDカードをフォーマットしますか?この操作は元に戻せません。"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"USBストレージ内データを消去"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"SDカード内データを消去"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"USBストレージ内の全データ消去"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"SDカードのすべてのデータを消去します"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"この操作を行うとUSBストレージ内のデータが消去されます。ストレージ内の"<b>"すべての"</b>"データが失われます。"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"この操作を行うとSDカード内のデータが消去されます。カード内の"<b>"すべての"</b>"データが失われます。"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"USBストレージ内データを消去"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"SDカード内データを消去"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"USBストレージをフォーマットして、保存されているすべてのファイルを削除しますか?この操作は元に戻せません。"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"SDカードをフォーマットして、保存されているすべてのファイルを削除しますか?この操作は元に戻せません。"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"すべて消去"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"ロック解除パターンを入力してください"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"ロック解除パターンを入力してSDカードのフォーマット実行を確認する必要があります。"</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"USBストレージ内のデータを消去してよいか確認するため、ロック解除パターンを入力する必要があります。"</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"SDカード内のデータを消去してよいか確認するため、ロック解除パターンを入力する必要があります。"</string>
     <string name="call_settings_title" msgid="5188713413939232801">"通話設定"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"ボイスメール、着信転送、発信者番号など"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"テザリング"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"無線ネットワーク使用のアプリケーション(地図など)で位置を表示する"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Wi-Fi/モバイルネットワークで位置を検出する"</string>
     <string name="location_gps" msgid="6296125378829097831">"GPS機能を使用"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"高精度測位(電池の消費を節約する場合はOFFにしてください)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"高精度測位"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"高精度測位(電池消費増、電波が良好な場所で使用)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"A-GPSを使用"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"サーバーでGPSを補助します(OFFにするとネットワーク使用率が減少します)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"アプリケーション"</string>
     <string name="data_size_label" msgid="8679376373625710107">"データ"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"アンインストール"</string>
+    <string name="disable_text" msgid="6544054052049395202">"無効にする"</string>
+    <string name="enable_text" msgid="9217362512327828987">"有効にする"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"データを消去"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"アップデートのアンインストール"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"特定の操作で使用する既定アプリケーションとして設定されています。"</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"設定されていません。"</string>
     <string name="clear_activities" msgid="7408923511535174430">"設定を消去"</string>
     <string name="unknown" msgid="1592123443519355854">"不明"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"並べ替え"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"名前順に表示する"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"サイズ順"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"実行中のサービスを表示"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"キャッシュしたプロセスを表示"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"容量を管理"</string>
     <string name="filter" msgid="2018011724373033887">"フィルタ"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"フィルタオプションを選択"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"すべて"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"ダウンロード済み"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"実行中"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"SDカード上"</string>
-    <string name="loading" msgid="3200408047793887917">"読み込み中..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"USBストレージ"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"SDカード上"</string>
+    <string name="disabled" msgid="9206776641295849915">"無効"</string>
+    <string name="no_applications" msgid="5190227407135243904">"アプリケーションはありません"</string>
+    <string name="internal_storage" msgid="1584700623164275282">"内部ストレージ"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USBストレージ"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SDカードストレージ"</string>
     <string name="recompute_size" msgid="7722567982831691718">"サイズを再計算中..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"削除"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"このアプリケーションのすべてのデータ(ファイル、設定、アカウント、データベースを含む)が完全に削除されます。"</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"バージョン<xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"移動"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"携帯端末に移動"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"SDカードに移動"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"USBストレージに移動"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"SDカードに移動"</string>
     <string name="moving" msgid="6431016143218876491">"移動中"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"ストレージの容量が不足しています。"</string>
     <string name="does_not_exist" msgid="837163572898468245">"そのアプリケーションは存在しません."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"指定したインストール先が無効です。"</string>
     <string name="system_package" msgid="1030561474413022831">"システムアップデートは外部メディアにはインストールできません。"</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"強制停止"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"このアプリケーションはすぐに再起動されます。強制停止してもよろしいですか?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"アプリケーションを強制終了すると正常に動作しない場合があります。終了してもよろしいですか?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"アプリケーションを移動"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"アプリケーションを移動できません。<xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"優先インストール先"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"新しいアプリケーションの優先インストール先を変更する"</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"ストレージ使用状況"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"アプリケーションのストレージ使用状況を表示する"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"実行中のサービス"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"現在実行中のサービスを表示して制御する"</string>
     <string name="service_restarting" msgid="2242747937372354306">"再起動中"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"実行中のサービスはありません"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"サービスを停止しますか?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"このサービスは、再起動するまで実行されません。アプリケーション<xliff:g id="APPLICATION">%1$s</xliff:g>にとって望ましくない結果になることがあります。"</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"停止"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"キャンセル"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"アプリケーションから起動: 停止するにはタップしてください"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: タップして管理"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"空き: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g>(<xliff:g id="COUNT">%1$d</xliff:g>)"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"その他: <xliff:g id="MEMORY">%2$s</xliff:g>(<xliff:g id="COUNT">%1$d</xliff:g>)"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"プロセス: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"キャッシュしたバックグラウンドプロセス"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"実行中のサービスはありません"</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"アプリケーションによって起動されたサービス。"</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g>空き"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g>使用中"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g>のプロセスと<xliff:g id="NUMSERVICES">%2$d</xliff:g>のサービス"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g>のプロセスと<xliff:g id="NUMSERVICES">%2$d</xliff:g>のサービス"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g>のプロセスと<xliff:g id="NUMSERVICES">%2$d</xliff:g>のサービス"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g>のプロセスと<xliff:g id="NUMSERVICES">%2$d</xliff:g>のサービス"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"実行中のアプリケーション"</string>
+    <string name="no_services" msgid="7133900764462288263">"アクティブなサービスはありません"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"サービス"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"プロセス"</string>
+    <string name="service_stop" msgid="6369807553277527248">"停止"</string>
+    <string name="service_manage" msgid="1876642087421959194">"設定"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"このサービスはアプリケーションによって起動されました。停止するとアプリケーションに問題が発生するおそれがあります。"</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"このアプリケーションを安全に停止できません。停止すると現在の作業が一部失われるおそれがあります。"</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"以前のアプリケーションのプロセスです。再度必要になった場合に備えて速度向上のために残されています。通常は停止する必要はありません。"</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: 現在使用中です。管理するには[設定]をタップしてください。"</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"使用中のメインプロセスです。"</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"サービス<xliff:g id="COMP_NAME">%1$s</xliff:g>は使用中です。"</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"プロバイダ<xliff:g id="COMP_NAME">%1$s</xliff:g>は使用中です。"</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"システムサービスを停止しますか?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"このシステムサービスを停止してよろしいですか?停止すると、電源を一旦OFFにして再度ONにするまで、端末の一部の機能が正常に動作しなくなる場合があります。"</string>
     <string name="language_settings" msgid="502219872342167227">"言語とキーボード"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"言語とキーボードの設定"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"言語と地域、文字入力の設定"</string>
-    <string name="language_category" msgid="3391756582724541530">"地域/言語設定"</string>
-    <string name="text_category" msgid="6342540511465136739">"文字入力設定"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"言語設定"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"キーボード設定"</string>
     <string name="phone_language" msgid="1165758957501090679">"言語を選択"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"自動修正"</string>
@@ -770,19 +840,18 @@
     <string name="show_password" msgid="2198798062604049206">"パスワードを表示"</string>
     <string name="show_password_summary" msgid="3806709974395178121">"パスワード入力時に文字を表示する"</string>
     <string name="ime_security_warning" msgid="812267421486877917">"この入力方法を選択すると、入力する全文字列の収集をアプリケーション(<xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>)に許可することになります。これにはパスワードやクレジットカード番号などの個人情報も含まれます。この入力方法を使用しますか?"</string>
-    <string name="user_dict_settings_titlebar" msgid="765659257455000490">"ユーザー辞書"</string>
-    <string name="user_dict_settings_title" msgid="8357027437499042191">"ユーザー辞書"</string>
+    <string name="user_dict_settings_titlebar" msgid="765659257455000490">"単語リスト"</string>
+    <string name="user_dict_settings_title" msgid="8357027437499042191">"単語リスト"</string>
     <string name="user_dict_settings_summary" msgid="7965571192902870454"></string>
     <string name="user_dict_settings_add_menu_title" msgid="4056762757149923551">"追加"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4702613990174126482">"辞書に追加"</string>
     <string name="user_dict_settings_edit_dialog_title" msgid="8967476444840548674">"語句の編集"</string>
     <string name="user_dict_settings_context_menu_edit_title" msgid="2210564879320004837">"編集"</string>
     <string name="user_dict_settings_context_menu_delete_title" msgid="9140703913776549054">"削除"</string>
-    <string name="user_dict_settings_empty_text" msgid="6209268025109242806">"ユーザー辞書に登録がありません。MENUから単語を登録してください。"</string>
+    <string name="user_dict_settings_empty_text" msgid="6209268025109242806">"単語リストに登録がありません。MENUから単語を登録してください。"</string>
     <string name="testing" msgid="6584352735303604146">"テスト中"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"携帯電話情報"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"電池情報"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"充電池データ"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"クイック起動"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"アプリケーションの起動にショートカットキーを割り当てる"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"アプリを選択"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"テキスト入力オプションを管理"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"<xliff:g id="IME_NAME">%1$s</xliff:g>の設定"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"画面キーボードの設定"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"端末内蔵キーボード"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"端末内蔵キーボードの設定"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"端末内蔵キーボード"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"端末内蔵物理キーボードの設定"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"開発"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"アプリケーション開発オプション"</string>
     <string name="enable_adb" msgid="7982306934419797485">"USBデバッグ"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"USBデバッグは開発専用に設計されています。コンピュータと端末の間でデータをコピーする場合、アプリケーションを通知なしで端末にインストールする場合、ログ データを読み取る場合に使用できます。"</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"ガジェットを選択"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"ウィジェットを選択"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"UID <xliff:g id="NUMBER">%d</xliff:g>の詳細"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"<xliff:g id="APP_NAME">%1$s</xliff:g>のネットワーク使用詳細:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"受信バイト数:<xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"送信済みバイト数:<xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"合計バイト数:<xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"<xliff:g id="APP_NAME">%1$s</xliff:g>のCPU使用詳細:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"ユーザー利用時間:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"システム利用時間:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"合計時間:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"起動: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g>日<xliff:g id="HOURS">%2$d</xliff:g>時間<xliff:g id="MINUTES">%3$d</xliff:g>分<xliff:g id="SECONDS">%4$d</xliff:g>秒"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g>時間<xliff:g id="MINUTES">%2$d</xliff:g>分<xliff:g id="SECONDS">%3$d</xliff:g>秒"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g>分<xliff:g id="SECONDS">%2$d</xliff:g>秒"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g>秒"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"このUIDを共有するパッケージ:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"充電池使用データなし"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"センサー:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"部分起動ロック:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"パッケージで使用されるセンサー:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"<xliff:g id="PACKAGE">%2$s</xliff:g>により<xliff:g id="COUNT">%1$d</xliff:g>回使用"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"次のいずれかにより<xliff:g id="COUNT">%1$d</xliff:g>回使用:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"実行中"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"画面点灯"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"電源ON"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"実動時間(スリープ除く):"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"画面バックライトの点灯時間:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"端末電源入の時間:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"充電池使用:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"電源接続:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"使用統計情報"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"使用統計情報"</string>
     <string name="display_order_text" msgid="8592776965827565271">"並べ替え:"</string>
@@ -865,12 +908,19 @@
     <string name="power_usage_summary" msgid="7237084831082848168">"電池を使用している操作"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"電池使用時間"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"リセット後の電池使用量"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"電池使用時間: <xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"電池使用時間: <xliff:g id="TIME">%1$s</xliff:g>"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"充電中"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"画面点灯"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPSがON"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"スリープなし"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"電波状態"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"端末使用時間"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"WiFiをONにしている時間"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"BluetoothをONにしている時間"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Wi-FiをONにしている時間"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Wi-FiをONにしている時間"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> -  <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"電池使用量の詳細"</string>
     <string name="details_subtitle" msgid="32593908269911734">"詳細を使用"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"アイドル状態"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"CPU合計"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPUフォアグラウンド"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"スリープモードにしない"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Wi-Fi使用"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"電話"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"送信されたデータ"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"受信したデータ"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"アプリケーション情報"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"アプリケーションの設定"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"画面設定"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"WiFiの設定"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Wi-Fi設定"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Bluetoothの設定"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"通話の電池使用量"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"アイドル時の電池使用量"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Bluetoothの電池使用量"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"未使用時はBluetoothをOFFにします"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"別のBluetooth端末に接続してみてください"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"アプリケーションの実行時の電池使用量"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"アプリケーションの電池使用量"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"アプリケーションを停止またはアンインストールします"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"未使用時はGPSをOFFにします"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"GPSをアプリケーションが使用しないように手動で管理する"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"アプリケーション側の設定で電池使用量を抑えられる場合があります"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"電池使用時間: <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"電池使用時間: <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"未インストール"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"女性"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"男性"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"音声合成エンジンインストール完了"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"使用前に新エンジンをONにします"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"安全な証明書と他の認証情報へのアクセスをアプリケーションに許可する"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"パスワードを入力する"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"認証情報ストレージパスワードを入力します。"</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"SDカードからインストール"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"暗号化された証明書をSDカードからインストールする"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"USBストレージからのインストール"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"SDカードからインストール"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"USBストレージから暗号化された証明書をインストール"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"暗号化された証明書をSDカードからインストールする"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"パスワードの設定"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"認証情報ストレージパスワードを設定または変更する"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"ストレージの消去"</string>
@@ -1068,6 +1124,16 @@
     <string name="credentials_erased" msgid="7700309135582200849">"認証情報ストレージが消去されました。"</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"認証情報ストレージが有効になりました。"</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"認証情報ストレージが無効になりました。"</string>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"暗号化ファイルシステム"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"個人データの暗号化"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"この携帯電話の個人データを格納するために暗号化ファイルシステムを有効にする"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"暗号化ファイルシステムを有効にするには、携帯電話データの消去が必要です。"</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"暗号化ファイルシステムを無効にするには、携帯電話データの消去が必要です。"</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"有効にする"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"無効にする"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"キャンセル"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"暗号化ファイルシステムのモードの変更がキャンセルされました。"</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"暗号化ファイルシステムの警告。"</string>
     <string name="emergency_tone_title" msgid="1055954530111587114">"緊急時の音"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"緊急通報時の動作を設定します"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"プライバシー"</string>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"バックアップと復元"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"個人データ"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"データのバックアップ"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"設定やその他のアプリケーションデータをバックアップします。"</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"アプリケーションデータ、Wi-Fiパスワード、その他の設定をGoogleサーバーにバックアップします。"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"自動復元"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"バックアップ済みの設定やその他のデータをアプリケーションの再インストール時に復元します。"</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"バックアップ済みの設定やその他のデータをアプリケーションの再インストール時に復元します"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"バックアップ"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"設定とアプリケーションデータのバックアップを停止し、Googleサーバー上のすべてのコピーを消去してもよろしいですか?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Wi-Fiパスワード、ブックマーク、その他の設定とアプリケーションデータのバックアップを停止し、Googleサーバー上のすべてのコピーを消去してよろしいですか?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"デバイス管理の設定"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"デバイス管理者"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"無効にする"</string>
diff --git a/res/values-ko/arrays.xml b/res/values-ko/arrays.xml
index 5d6e854..494a946 100644
--- a/res/values-ko/arrays.xml
+++ b/res/values-ko/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"전원에 연결되었을 때는 절전 모드로 전환되지 않음"</item>
     <item msgid="1986753720941888596">"절전 모드로 전환 안함"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"CPU 사용량"</item>
-    <item msgid="6401018715947316517">"네트워크 사용량"</item>
-    <item msgid="188092590354892392">"GPS 사용량"</item>
-    <item msgid="8414109131222049141">"센서 사용량"</item>
-    <item msgid="1327904325081257093">"부분 가동 사용량"</item>
-    <item msgid="4832254146664706277">"기타 사용량"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"마지막으로 플러그를 뽑은 이후"</item>
-    <item msgid="166936313535197598">"부팅 후 총 사용 시간"</item>
-    <item msgid="4793941382744963893">"총 사용 시간"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"사용 시간"</item>
     <item msgid="1908750532762193304">"계수 시작"</item>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 59bf85d..64463d3 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"SD 카드 마운트 해제"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"SD 카드 포맷"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"USB 저장소 마운트 해제"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"SD 카드 마운트 해제"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"USB 저장소 지우기"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"SD 카드 지우기"</string>
     <string name="small_font" msgid="2295331917424072635">"작게"</string>
     <string name="medium_font" msgid="2068475425515133701">"보통"</string>
     <string name="large_font" msgid="599055175160971446">"크게"</string>
     <string name="font_size_save" msgid="3450855718056759095">"확인"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"SD 카드"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB 저장소"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD 카드"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"배터리 상태:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"전원 플러그:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"배터리 충전 상태:"</string>
@@ -179,28 +182,35 @@
     <string name="band_mode_succeeded" msgid="2701016190055887575">"성공"</string>
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"변경사항을 적용하려면 USB 케이블을 다시 연결해야 합니다."</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"USB 대용량 저장소 사용"</string>
-    <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"총 바이트 수: "</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"SD 카드 없음"</string>
+    <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"총 바이트 수:"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"USB 저장소가 마운트되지 않았습니다."</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"SD 카드 없음"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"사용 가능한 바이트:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"SD 카드를 대용량 저장장치로 사용 중"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"이제 SD 카드를 안전하게 제거할 수 있습니다."</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"SD 카드를 사용하는 중에 분리되었습니다."</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USB 저장소를 대용량 저장장치로 사용 중"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"SD 카드를 대용량 저장장치로 사용 중"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"이제 USB 저장소를 안전하게 제거할 수 있습니다."</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"이제 SD 카드를 안전하게 제거할 수 있습니다."</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"USB 저장소가 사용 중에 분리되었습니다."</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"SD 카드를 사용하는 중에 분리되었습니다."</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"사용 바이트 수:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"SD 카드에서 미디어 검색 중..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"SD 카드가 읽기전용으로 마운트됨"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"USB 저장소에서 미디어 검색 중…"</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"SD 카드에서 미디어 검색 중..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"USB 저장소가 읽기전용으로 마운트됨"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"SD 카드가 읽기전용으로 마운트됨"</string>
     <string name="next_label" msgid="4693520878012668114">"다음"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"언어"</string>
     <string name="select_your_language" msgid="1146235168951906084">"언어 선택"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"활동 선택"</string>
     <string name="device_info_label" msgid="6551553813651711205">"장치정보"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"배터리 정보"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"배터리 기록"</string>
     <string name="display_label" msgid="7403874003169865762">"디스플레이"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"휴대전화 정보"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"SD 카드"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB 저장소"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SD 카드"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"프록시 설정"</string>
     <string name="cancel" msgid="6859253417269739139">"취소"</string>
     <string name="settings_label" msgid="1626402585530130914">"설정"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"설정"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"설정"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"비행기 모드"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"모든 무선 연결 사용 안함"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"스피커폰으로 사용"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"음악 및 미디어"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"설정 기억"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"NFC(Near Field Communication)를 사용하여 태그를 읽고 교환합니다."</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Wi-Fi 켜기"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Wi-Fi 설정"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Wi-Fi에서 모바일 데이터로 전환될 때 표시"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"절전 정책을 설정하는 동안 문제가 발행했습니다."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MAC 주소"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP 주소"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"IP 설정"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"저장"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"취소"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"상태"</string>
     <string name="device_status" msgid="607405385799807324">"상태"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"전화번호, 신호 등"</string>
-    <string name="storage_settings" msgid="6681164315506788024">"저장공간"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"SD 카드 및 휴대전화 저장공간 설정"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"SD 카드 마운트 해제, 사용 가능한 저장공간 보기"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"저장소"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"저장소 설정"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"USB 저장소를 마운트 해제하고 사용 가능한 저장공간을 봅니다."</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"SD 카드 마운트 해제, 사용 가능한 저장공간 보기"</string>
     <string name="status_number" msgid="5123197324870153205">"내 휴대전화 번호"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"PRL 버전"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"사용할 수 없음"</string>
     <string name="status_up_time" msgid="7294859476816760399">"가동 시간"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"무중단 가동 시간"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"휴대전화 내부 저장공간"</string>
-    <string name="sd_memory" msgid="151871913888051515">"SD 카드"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"내부 저장소"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"USB 저장소"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"SD 카드"</string>
     <string name="memory_available" msgid="418542433817289474">"사용 가능한 저장공간"</string>
     <string name="memory_size" msgid="6629067715017232195">"총 공간"</string>
-    <string name="sd_eject" msgid="6915293408836853020">"SD 카드 마운트 해제"</string>
-    <string name="sd_eject_summary" msgid="3315557796211542962">"안전 제거를 위해 SD 카드 마운트 해제"</string>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"마운트할 SD 카드 삽입"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"SD 카드 마운트"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"SD 카드 마운트"</string>
-    <string name="sd_format" msgid="5448738337382712203">"SD 카드 포맷"</string>
-    <string name="sd_format_summary" msgid="6616491027883134004">"SD 카드 포맷(지우기)"</string>
+    <string name="sd_eject" product="default" msgid="6915293408836853020">"SD 카드 마운트 해제"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"내부 USB 저장소 마운트 해제"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"SD 카드를 마운트 해제하여 안전하게 제거"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"마운트할 USB 저장소 삽입"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"마운트할 SD 카드 삽입"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"공유 저장장치 마운트"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"SD 카드 마운트"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"내부 USB 저장소 마운트"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"SD 카드 마운트"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"USB 저장소 지우기"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"SD 카드 지우기"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"휴대전화의 내부 USB 저장소에 있는 모든 데이터(예: 음악 및 사진)를 지웁니다."</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"휴대전화의 SD 카드에 있는 모든 데이터(예: 음악 및 사진) 지우기"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"사용할 수 없음"</string>
     <string name="read_only" msgid="6702420168629076340">" (읽기전용)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"SD 카드 마운트 해제"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"SD 카드를 마운트 해제하면 사용 중인 일부 애플리케이션이 중지되고 SD 카드를 다시 마운트할 때까지 사용할 수 없게 됩니다."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"SD 카드 마운트 해제 실패\n"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"SD 카드를 마운트 해제할 수 없습니다. 나중에 다시 시도하세요."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"SD 카드가 마운트 해제됩니다. 알림 영역에서 상태를 확인하세요."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"USB 저장소 마운트 해제"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"SD 카드 마운트 해제"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"USB 저장소를 마운트 해제하면 사용 중인 일부 애플리케이션이 중지되고 USB 저장소를 다시 마운트할 때까지 사용할 수 없게 됩니다."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"SD 카드를 마운트 해제하면 사용 중인 일부 애플리케이션이 중지되고 SD 카드를 다시 마운트할 때까지 사용할 수 없게 됩니다."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"USB 저장소 마운트 해제 실패"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"SD 카드 마운트 해제 실패"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"USB 저장소를 마운트 해제할 수 없습니다. 다시 시도하세요."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"SD 카드를 마운트 해제할 수 없습니다. 나중에 다시 시도하세요."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"USB 저장소를 마운트 해제합니다."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"SD 카드가 마운트 해제됩니다."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"마운트 해제 중"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"마운트 해제 중"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"배터리 상태"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"기본 APN 설정을 재설정했습니다."</string>
     <string name="master_clear_title" msgid="5907939616087039756">"기본값 데이터 재설정"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"휴대전화의 모든 데이터 지우기"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"휴대전화에서 다음 모든 데이터가 지워집니다."\n<li>"Google 계정"</li>\n<li>"시스템과 애플리케이션 데이터 및 설정"</li>\n<li>"다운로드한 애플리케이션"</li>\n"삭제되지 않는 항목은 다음과 같습니다. "\n<li>"현재 시스템 소프트웨어 및 번들 애플리케이션"</li>\n<li>"음악 또는 사진 등의 SD 카드 파일"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"휴대전화의 "<b>"내부 저장소"</b>"에서 "\n\n<li>"Google 계정"</li>\n<li>"시스템과 애플리케이션의 데이터 및 설정"</li>\n<li>"다운로드한 애플리케이션"</li>\n\n" 등을 비롯한 모든 데이터가 지워집니다. 휴대전화의 모든 데이터를 지우려면 "<b>"USB 저장소"</b>"를 지워야 합니다."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"휴대전화의 "<b>"내부 저장소"</b>"에서 "\n\n<li>"Google 계정"</li>\n<li>"시스템과 애플리케이션의 데이터 및 설정"</li>\n<li>"다운로드한 애플리케이션"</li>\n\n" 등을 비롯한 모든 데이터가 지워집니다. 음악, 사진 및 기타 사용자 데이터도 지우려면 "<b>"SD 카드"</b>"를 지워야 합니다."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"USB 저장소 지우기"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"SD 카드 지우기"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"휴대전화기의 내부 USB 저장소에 있는 모든 데이터(예: 음악 또는 사진)를 지웁니다."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"휴대전화의 SD 카드에 있는 모든 데이터(예: 음악 및 사진)를 지웁니다."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"휴대전화 재설정"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"모든 개인 정보와 다운로드한 애플리케이션을 삭제하시겠습니까? 수행한 작업은 취소할 수 없습니다."</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"모두 지우기"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"잠금해제 패턴을 그리세요."</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"휴대전화 재설정을 확인하려면 잠금해제 패턴을 그려야 합니다."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"시스템 지우기 서비스를 사용할 수 없어 재설정을 수행하지 못했습니다."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"SD 카드 포맷."</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"SD 카드의 모든 데이터 지우기"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"이 작업을 수행하면 휴대전화의 SD 카드에 저장된 모든 데이터를 잃게 됩니다."</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"SD 카드 포맷"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"SD 카드를 포맷하여 모든 미디어를 지우시겠습니까? 수행한 작업은 취소할 수 없습니다."</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"USB 저장소 지우기"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"SD 카드 지우기"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"USB 저장소의 모든 데이터 지우기"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"SD 카드의 모든 데이터 지우기"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"이 작업을 수행하면 USB 저장소가 지워집니다. 저장된 "<b>"모든"</b>" 데이터가 삭제되니 주의하세요."</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"이 작업을 수행하면 SD 카드가 지워집니다. 카드에 저장된 "<b>"모든"</b>" 데이터가 삭제되니 주의하세요."</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"USB 저장소 지우기"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"SD 카드 지우기"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"USB 저장소를 지워서 저장된 모든 파일을 삭제하시겠습니까? 수행한 후에는 작업을 취소할 수 없습니다."</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"SD 카드를 지워서 저장된 모든 파일을 삭제하시겠습니까? 수행한 후에는 작업을 취소할 수 없습니다."</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"모두 지우기"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"잠금해제 패턴을 그리세요."</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"SD 카드 포맷을 확인하려면 잠금해제 패턴을 그려야 합니다."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"USB 저장소를 지우려면 잠금해제 패턴을 그려야 합니다."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"SD 카드를 지우려면 잠금해제 패턴을 그려야 합니다."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"통화 설정"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"음성메일, 착신전환, 통화중 대기, 발신자 번호 설정"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"테더링"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"무선 네트워크를 사용하는 애플리케이션(예: 지도)에서 위치 보기"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Wi-Fi 및/또는 모바일 네트워크에서 측정된 위치"</string>
     <string name="location_gps" msgid="6296125378829097831">"GPS 위성 사용"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"도로 수준으로 정확하게 탐색(배터리를 절약하려면 선택 취소)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"도로 수준으로 정확하게 탐색"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"도로 수준으로 탐색(항공사진이 더해져 배터리 추가로 필요)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"GPS 도우미 사용"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"서버를 사용하여 GPS 보조(네트워크 사용량을 줄이려면 선택 취소)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"애플리케이션"</string>
     <string name="data_size_label" msgid="8679376373625710107">"데이터"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"제거"</string>
+    <string name="disable_text" msgid="6544054052049395202">"사용 안함"</string>
+    <string name="enable_text" msgid="9217362512327828987">"사용"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"데이터 지우기"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"업데이트 제거"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"이 애플리케이션을 해당 작업에 대한 기본 프로그램으로 실행하도록 선택했습니다."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"기본값이 설정되지 않았습니다."</string>
     <string name="clear_activities" msgid="7408923511535174430">"기본 작업 지우기"</string>
     <string name="unknown" msgid="1592123443519355854">"알 수 없음"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"정렬"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"이름별 정렬"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"크기별 정렬"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"실행 중인 서비스 표시"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"캐시된 프로세스 표시"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"공간 관리"</string>
     <string name="filter" msgid="2018011724373033887">"필터"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"필터 옵션 선택"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"모두"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"다운로드됨"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"실행 중"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"SD 카드"</string>
-    <string name="loading" msgid="3200408047793887917">"로드 중..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"USB 저장소"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"SD 카드"</string>
+    <string name="disabled" msgid="9206776641295849915">"사용 안함"</string>
+    <string name="no_applications" msgid="5190227407135243904">"애플리케이션이 없습니다."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"내부 저장소"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USB 저장소"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SD 카드 저장소"</string>
     <string name="recompute_size" msgid="7722567982831691718">"크기 다시 계산 중..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"삭제"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"애플리케이션의 전체 데이터가 영구적으로 삭제됩니다. 여기에는 모든 파일, 설정, 계정, 데이터베이스 등이 포함됩니다."</string>
@@ -727,37 +776,58 @@
     <string name="version_text" msgid="9189073826278676425">"버전 <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"이동"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"휴대전화로 이동"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"SD 카드로 이동"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"USB 저장소로 이동"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"SD 카드로 이동"</string>
     <string name="moving" msgid="6431016143218876491">"이동하는 중"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"남은 저장공간이 부족합니다."</string>
     <string name="does_not_exist" msgid="837163572898468245">"애플리케이션이 없습니다."</string>
     <string name="app_forward_locked" msgid="5747805144210389585">"복제 방지된 애플리케이션입니다."</string>
     <string name="invalid_location" msgid="4934491353200240499">"지정된 설치 위치가 잘못되었습니다."</string>
-    <string name="system_package" msgid="1030561474413022831">"외부 미디어에 시스템 업데이트를 설치할 수 없습니다. "</string>
+    <string name="system_package" msgid="1030561474413022831">"외부 미디어에 시스템 업데이트를 설치할 수 없습니다."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"강제 종료"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"애플리케이션은 바로 다시 시작됩니다. 강제로 종료하시겠습니까?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"강제로 애플리케이션을 종료하면 예기치 않은 오류가 발생할 수 있습니다. 계속하시겠습니까?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"애플리케이션 이동"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"애플리케이션을 이동하지 못했습니다. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"기본 설치 위치"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"새 애플리케이션에 대한 기본 설치 위치를 변경합니다."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"저장공간 사용량"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"애플리케이션에서 사용한 저장소 보기"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"실행 중인 서비스"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"현재 실행 중인 서비스 보기 및 제어"</string>
     <string name="service_restarting" msgid="2242747937372354306">"다시 시작하는 중"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"실행 중인 서비스 없음"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"서비스를 중지할까요?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"다시 시작할 때까지 서비스가 더 이상 실행되지 않습니다. 이로 인해 <xliff:g id="APPLICATION">%1$s</xliff:g> 애플리케이션에서 원하지 않는 결과가 발생할 수 있습니다."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"중지"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"취소"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"애플리케이션에서 시작: 중지하려면 터치"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: 관리하려면 터치"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"사용: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g>(<xliff:g id="COUNT">%1$d</xliff:g>개 프로세스)"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"기타: <xliff:g id="MEMORY">%2$s</xliff:g>(<xliff:g id="COUNT">%1$d</xliff:g>개 프로세스)"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"프로세스: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"백그라운드 프로세스 캐시됨"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"실행 중인 서비스가 없습니다."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"애플리케이션에서 시작했습니다."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> 무료"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> 사용됨"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"프로세스 <xliff:g id="NUMPROCESS">%1$d</xliff:g>개 및 서비스 <xliff:g id="NUMSERVICES">%2$d</xliff:g>개"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"프로세스 <xliff:g id="NUMPROCESS">%1$d</xliff:g>개 및 서비스 <xliff:g id="NUMSERVICES">%2$d</xliff:g>개"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"프로세스 <xliff:g id="NUMPROCESS">%1$d</xliff:g>개 및 서비스 <xliff:g id="NUMSERVICES">%2$d</xliff:g>개"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"프로세스 <xliff:g id="NUMPROCESS">%1$d</xliff:g>개 및 서비스 <xliff:g id="NUMSERVICES">%2$d</xliff:g>개"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"실행 중인 애플리케이션"</string>
+    <string name="no_services" msgid="7133900764462288263">"사용중인 서비스 없음"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"서비스"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"프로세스"</string>
+    <string name="service_stop" msgid="6369807553277527248">"중지"</string>
+    <string name="service_manage" msgid="1876642087421959194">"설정"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"이 서비스는 해당 애플리케이션에서 시작했습니다. 중지할 경우 애플리케이션에 장애가 발생할 수 있습니다."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"이 애플리케이션을 안전하게 중지할 수 없습니다. 중지할 경우 현재 작업의 일부가 유실될 수 있습니다."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"향후에 다시 필요할 경우 빠르게 실행하기 위해 저장해두는 백그라운드 프로세스로서 일반적으로 중지할 필요는 없습니다."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>이(가) 현재 사용 중입니다. 조정하려면 설정을 터치하세요."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"사용 중인 기본 프로세스입니다."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"서비스 <xliff:g id="COMP_NAME">%1$s</xliff:g>이(가) 사용 중입니다."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"제공업체(<xliff:g id="COMP_NAME">%1$s</xliff:g>)를 사용 중입니다."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"시스템 서비스를 중지하시겠습니까?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"이 시스템 서비스를 중지하시겠습니까? 중지하면 휴대전화의 일부 기능이 올바르게 작동되지 않을 수 있으며 전원을 껐다 켜야 합니다."</string>
     <string name="language_settings" msgid="502219872342167227">"언어 및 키보드"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"언어 및 키보드 설정"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"로케일(언어 및 지역), 텍스트 입력 및 자동 수정 옵션 설정"</string>
-    <string name="language_category" msgid="3391756582724541530">"로케일 설정"</string>
-    <string name="text_category" msgid="6342540511465136739">"텍스트 설정"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"언어 설정"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"키보드 설정"</string>
     <string name="phone_language" msgid="1165758957501090679">"언어 선택"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"자동 바꾸기"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"테스트 중"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"휴대전화 정보"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"배터리 정보"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"배터리 기록"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"빠른실행"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"애플리케이션을 실행하는 바로가기 설정"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"애플리케이션 할당"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"텍스트 입력 옵션 관리"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"<xliff:g id="IME_NAME">%1$s</xliff:g> 설정"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"화면 키보드 설정"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"기기 키보드"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"내장 키보드 설정"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"내장 키보드"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"내장 물리적 키보드 설정"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"개발"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"애플리케이션 개발 옵션 설정"</string>
     <string name="enable_adb" msgid="7982306934419797485">"USB 디버깅"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"USB 디버깅은 개발용으로만 설계되었습니다. 이 기능을 사용하면 컴퓨터와 장치 간에 데이터를 복사하고 알림 없이 장치에 애플리케이션을 설치하며 로그 데이터를 읽을 수 있습니다."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"가젯 선택"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"위젯 선택"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"UID <xliff:g id="NUMBER">%d</xliff:g>의 세부정보"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"<xliff:g id="APP_NAME">%1$s</xliff:g>의 네트워크 사용 세부정보"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"받은 바이트 수: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"보낸 바이트 수: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"총 바이트 수: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"<xliff:g id="APP_NAME">%1$s</xliff:g>의 CPU 사용 세부정보"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"사용자 시간:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"시스템 시간:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"시간 합계:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"시작: <xliff:g id="STARTS">%1$d</xliff:g>번"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g>일 <xliff:g id="HOURS">%2$d</xliff:g>시간 <xliff:g id="MINUTES">%3$d</xliff:g>분 <xliff:g id="SECONDS">%4$d</xliff:g>초"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g>시간 <xliff:g id="MINUTES">%2$d</xliff:g>분 <xliff:g id="SECONDS">%3$d</xliff:g>초"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g>분 <xliff:g id="SECONDS">%2$d</xliff:g>초"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g>초"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"이 UID를 공유하는 패키지"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"배터리 사용 데이터가 없습니다."</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"센서:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"부분적 가동 잠금:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"패키지가 사용한 센서:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"<xliff:g id="PACKAGE">%2$s</xliff:g>에서 <xliff:g id="COUNT">%1$d</xliff:g>번 사용"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"다음 중 하나가 <xliff:g id="COUNT">%1$d</xliff:g>번 사용:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"실행 중"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"화면 켜짐"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"휴대전화 켜짐"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"절전 모드로 전환되지 않고 사용한 시간:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"화면을 켠 상태에서 소비한 시간:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"휴대전화가 켜진 상태로 사용한 시간:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"배터리 켜짐 시간: "</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"연결됨:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"사용 통계"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"사용 통계"</string>
     <string name="display_order_text" msgid="8592776965827565271">"정렬 기준:"</string>
@@ -865,12 +908,19 @@
     <string name="power_usage_summary" msgid="7237084831082848168">"배터리를 사용한 항목"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"플러그를 뽑은 이후 배터리 전원 사용"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"재설정 이후 배터리 사용"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"배터리 사용 시간: <xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"플러그를 뽑은 후 <xliff:g id="TIME">%1$s</xliff:g>"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"충전 중"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"화면 켜짐"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS 사용"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"켜짐"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"신호 강도"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"장치 무중단 가동 시간"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"WiFi 사용 시간"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi 사용 시간"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Wi-Fi 사용 시간"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Wi-Fi 사용 시간"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> -  <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"배터리 사용 세부정보"</string>
     <string name="details_subtitle" msgid="32593908269911734">"사용 세부정보"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"휴대전화 유휴 상태"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"총 CPU"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPU 포그라운드"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"켜진 상태로 유지"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Wi-Fi 실행 중"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"휴대전화"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"보낸 데이터"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"수신된 데이터"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"애플리케이션 정보"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"애플리케이션 설정"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"디스플레이 설정"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"WiFi 설정"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Wi-Fi 설정"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Bluetooth 설정"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"음성 통화에서 배터리 사용"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"휴대전화가 유휴 상태일 때 배터리 사용"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"블루투스에서 배터리 사용"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"사용 중이 아닐 때에는 Bluetooth 끄기"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"다른 블루투스 장치로 연결 시도"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"실행 중에 애플리케이션에서 배터리 사용"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"애플리케이션 배터리 사용량"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"애플리케이션 중지 또는 제거"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"사용 중이 아닌 경우 GPS 사용 안함"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"애플리케이션이 GPS를 사용할 수 없도록 수동으로 제어"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"애플리케이션에서 배터리 사용을 줄일 수 있는 설정을 제공할 수 있습니다."</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"플러그를 뽑은 후 <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"마지막으로 플러그를 뽑은 이후 <xliff:g id="UNPLUGGED">%1$s</xliff:g> 동안"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"설치되지 않음"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"여성"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"남성"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"음성 합성 엔진이 설치됨"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"사용 전에 새 엔진 사용 설정"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"애플리케이션이 보안 인증서 및 다른 자격증명에 액세스 허용"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"비밀번호 입력"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"자격증명 저장소 비밀번호를 입력하세요."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"SD 카드에서 설치"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"SD 카드에서 암호화된 인증서 설치"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"USB 저장소에서 설치"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"SD 카드에서 설치"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"USB 저장소에서 암호화된 인증서 설치"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"SD 카드에서 암호화된 인증서 설치"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"비밀번호 설정"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"자격증명 저장소 비밀번호를 설정하거나 변경"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"저장소 삭제"</string>
@@ -1068,6 +1124,16 @@
     <string name="credentials_erased" msgid="7700309135582200849">"자격증명 저장소가 삭제되었습니다."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"자격증명 저장소를 사용합니다."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"자격증명 저장소를 사용 중지했습니다."</string>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"암호화된 파일 시스템"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"비공개 사용자 데이터 암호화"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"기기의 비공개 사용자 데이터에 대해 암호화된 파일 시스템 저장소 사용"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"암호화된 파일 시스템을 사용하려면 기기 데이터를 지워야 합니다."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"암호화된 파일 시스템의 사용을 중지하려면 기기 데이터를 지워야 합니다."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"사용"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"사용 중지"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"취소"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"암호화된 파일 시스템 모드 변경이 취소되었습니다."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"암호화된 파일 시스템 경고"</string>
     <string name="emergency_tone_title" msgid="1055954530111587114">"긴급 신호음"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"긴급 통화 중 동작 설정"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"개인정보 보호"</string>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"백업 및 복원"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"개인 데이터"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"내 데이터 백업"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"내 설정 및 다른 애플리케이션 데이터를 백업합니다."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"애플리케이션 데이터, Wi-Fi 비밀번호 및 기타 설정을 Google 서버에 백업"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"자동 복원"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"애플리케이션을 다시 설치하면 백업한 설정이나 다른 데이터를 복원합니다."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"애플리케이션을 다시 설치하면 백업한 설정이나 다른 데이터를 복원합니다"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"백업"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"설정 및 애플리케이션 데이터 백업을 중지하고 Google 서버에 있는 모든 사본을 삭제하시겠습니까?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Wi-Fi 비밀번호, 북마크, 기타 설정 및 애플리케이션 데이터 백업을 중지하고 Google 서버에 있는 모든 사본을 지우시겠습니까?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"기기 관리 설정"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"기기 관리자"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"비활성화"</string>
diff --git a/res/values-nb/arrays.xml b/res/values-nb/arrays.xml
index 9631987..4612b8c 100644
--- a/res/values-nb/arrays.xml
+++ b/res/values-nb/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Aldri når tilkoblet"</item>
     <item msgid="1986753720941888596">"Aldri"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"CPU-bruk"</item>
-    <item msgid="6401018715947316517">"Nettverksbruk"</item>
-    <item msgid="188092590354892392">"GPS-bruk"</item>
-    <item msgid="8414109131222049141">"Sensorbruk"</item>
-    <item msgid="1327904325081257093">"Delvis våken bruk"</item>
-    <item msgid="4832254146664706277">"Annen bruk"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Siden sist uten strøm"</item>
-    <item msgid="166936313535197598">"Totalt siden oppstart"</item>
-    <item msgid="4793941382744963893">"Totalt hele tiden"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Brukstid"</item>
     <item msgid="1908750532762193304">"Start telling"</item>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 92e4364..5121efa 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Avmonter minnekort"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Formater minnekort"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Koble fra USB-lagring"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Avmonter minnekort"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Slett USB-lagring"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Slett SD-kort"</string>
     <string name="small_font" msgid="2295331917424072635">"Liten"</string>
     <string name="medium_font" msgid="2068475425515133701">"Middels"</string>
     <string name="large_font" msgid="599055175160971446">"Stor"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"Minnekort"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-lagring"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Minnekort"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Batteristatus:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Strømplugg:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Batteriskala:"</string>
@@ -178,29 +181,36 @@
     <string name="band_mode_failed" msgid="1495968863884716379">"Mislykket"</string>
     <string name="band_mode_succeeded" msgid="2701016190055887575">"Vellykket"</string>
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Endringene vil tre i kraft når USB-kabelen kobles til på nytt"</string>
-    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Skru på USB-masselagring"</string>
+    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Aktiver USB-masselagring"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Totalt antall byte:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Minnekort mangler"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"USB-lagring ikke tilkoblet"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Minnekort mangler"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Tilgjengelig antall byte:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"Minnekortet blir brukt som en masselagringsenhet"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"Det er trygt å fjerne minnekortet"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"Minnekortet ble fjernet mens det fortsatt var i bruk!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USB-lagr. brukt til masselagr."</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"Minnekortet blir brukt som en masselagringsenhet"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"USB-lagring kan nå fjernes"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"Det er trygt å fjerne minnekortet"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"USB-lagr. fjernet under bruk!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"Minnekortet ble fjernet mens det fortsatt var i bruk!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Brukt antall byte:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Leter etter media på minnekortet…"</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"Minnekortet ble montert skrivebeskyttet"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Skanner USB-lagr. for medier"</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Leter etter media på minnekortet…"</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"USB-lagr. har kun lesetilg."</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"Minnekortet ble montert skrivebeskyttet"</string>
     <string name="next_label" msgid="4693520878012668114">"Neste"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Regionsinnstillinger"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Språk"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Velg aktivitet"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Enhetsinformasjon"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Batteriinformasjon"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Batterihistorikk"</string>
     <string name="display_label" msgid="7403874003169865762">"Skjerm"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Telefoninformasjon"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"Minnekort"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB-lagring"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"Minnekort"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Mellomtjener-innstillinger"</string>
     <string name="cancel" msgid="6859253417269739139">"Avbryt"</string>
     <string name="settings_label" msgid="1626402585530130914">"Innstillinger"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Innstillinger"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Innstillinger"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Flymodus"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Slå av alle trådløse tilkoblinger"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Som høyttalertelefon"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"For musikk og medier"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Husk innstillinger"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Bruk NFC-teknologi for å lese og utveksle koder"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Trådløst nett"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Slå på trådløst nett"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Trådløsinnstillinger"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Spesifiser når telefonen skal bytte fra trådløsnett til mobiltelefonidata"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Det oppsto et problem under setting av soveinnstilling."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MAC-adresse"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP-adresse"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"IP-innstillinger"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Lagre"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Avbryt"</string>
@@ -444,7 +460,7 @@
     <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="dock_sounds_enable_title" msgid="3659084028644948905">"Lyd ved innsetting i forankringsstasjon"</string>
+    <string name="dock_sounds_enable_title" msgid="3659084028644948905">"Lyd ved innsetting"</string>
     <string name="dock_sounds_enable_summary_on" msgid="8491180514199743771">"Spill av lyd når telefonen settes inn eller tas ut av forankringsstasjonen"</string>
     <string name="dock_sounds_enable_summary_off" msgid="3151046599205265919">"Ikke spill av lyd når telefonen settes inn eller tas ut av forankringsstasjonen"</string>
     <string name="sync_settings" msgid="9186125469300013491">"Kontoer/synkronisering"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
     <string name="device_status" msgid="607405385799807324">"Status"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Telefonnummer, signalstyrke, osv."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"Minnekort og telefonlager"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Minnekort og telefonlager"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Avmonter minnekort, vis ledig plass"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Lagring"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Innstillinger for lagring"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Koble fra USB-lagring og vis tilgjengelig lagringsplass"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Avmonter minnekort, vis ledig plass"</string>
     <string name="status_number" msgid="5123197324870153205">"Telefonnummer"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"PRL-versjon"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Ikke tilgjengelig"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Oppetid"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Våken tid"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Intern lagringsplass"</string>
-    <string name="sd_memory" msgid="151871913888051515">"Minnekort"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Intern lagring"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"USB-lagring"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"Minnekort"</string>
     <string name="memory_available" msgid="418542433817289474">"Tilgjengelig plass"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Sett inn et minnekort for å koble til"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Koble til minnekort"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Koble til minnekortet"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"Avmonter/løs ut minnekort"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Koble fra intern USB-lagring"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Koble fra SD-kortet for trygg fjerning"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Sett inn USB-lagring"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Sett inn et minnekort for å koble til"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Koble til delt lagring"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Koble til minnekort"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Koble fra intern USB-lagring"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Koble til minnekortet"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Slett USB-lagring"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Slett SD-kort"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Sletter intern USB-lagring."</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Sletter alle data på telefonens SD-kort, som for eksempel musikk og bilder"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Ikke tilgjengelig"</string>
     <string name="read_only" msgid="6702420168629076340">" (skrivebeskyttet)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Koble fra minnekort"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Hvis du kobler fra minnekortet, vil ikke lenger alle programmene virke, og de kan være utilgjengelige inntil du kobler til minnekortet på nytt."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Fikk ikke koblet fra minnekort"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"Får ikke koblet fra minnekort. Prøv på nytt senere."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"Minnekortet kobles fra. Kontroller status i varslingsfeltet."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Koble fra USB-lagring"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Koble fra minnekort"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Hvis du kobler fra USB-lagring, vil ikke lenger alle programmene virke, og de kan være utilgjengelige inntil du kobler til USB-lagring på nytt."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Hvis du kobler fra minnekortet, vil ikke lenger alle programmene virke, og de kan være utilgjengelige inntil du kobler til minnekortet på nytt."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Frakobl. av USB-lagr. misl."</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Fikk ikke koblet fra minnekort"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"Kan ikke koble fra USB-lagring. Prøv på nytt senere."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"Får ikke koblet fra minnekort. Prøv på nytt senere."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"USB-lagring kobles fra."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"SD-kort kobles fra."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Kobler fra minnekort"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Frakobling pågår"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Batteristatus"</string>
@@ -571,26 +600,37 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Ferdig med å gjenopprette standardvalg for APN"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Fabrikkinnstillinger"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Fjern alle data fra telefonen"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Dette vil fjerne alle data fra telefonen, herunder:"\n<li>"Google-kontoen din"</li>\n<li>"System- og programdata og -innstillinger"</li>\n<li>"Nedlastede programmer"</li>\n"Det vil ikke slette:"\n<li>"Gjeldende systemprogramvare og medfølgende programmer"</li>\n<li>"Filer på minnekortet, eksempelvis musikk eller bilder"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Dette sletter alle data fra telefonens "<b>"interne lagring"</b>", herunder:"\n\n<li>"Google-kontoen"</li>\n<li>"System- og programdata og innstillinger"</li>\n<li>"Nedlastede programmer"</li>\n\n"Hvis du vil slette alle data på telefonen, må "<b>"USB-kortet"</b>" slettes."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Dette sletter alle data fra telefonens "<b>"interne lagring"</b>", herunder:"\n\n<li>"Google-kontoen"</li>\n<li>"System- og programdata og innstillinger"</li>\n<li>"Nedlastede programmer"</li>\n\n"Hvis du også vil slette musikk, bilder og andre brukerdata, må "<b>"SD-kortet"</b>" slettes."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Slett USB-lagring"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Slett SD-kort"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Slett all intern USB-lagring."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Slett alle data på SD-kort."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Tilbakestill telefonen"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Fjern all personlig informasjon og nedlastede applikasjoner? Dette kan ikke gjøres om!"</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Fjern alt"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Tegn opplåsingsmønsteret"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Du må tegne opplåsingsmønsteret for å bekrefte tilbakestilling av telefonen."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Telefonen ble ikke tilbakestilt fordi tilbakestillingstjenesten ikke er tilgjengelig."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Formater minnekort"</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Sletter alle data fra minnekortet"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Dette valget vil slette alle data fra minnekortet i telefonen. Du vil miste ALLE data på kortet!"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Formater minnekort"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Formater minnekortet? Dette vil fjerne alle data, og kan ikke gjøres om!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Slett USB-lagring"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Slett SD-kort"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Sletter alle data i USB-lagr."</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Sletter alle data fra minnekortet"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Handlingen sletter USB-lagring. "<b>"Alle"</b>" data i USB-lagring vil gå tapt!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Handlingen sletter SD-kortet. "<b>"Alle"</b>" data på kortet vil gå tapt!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Slett USB-lagring"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Slett SD-kort"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"Vil du formatere USB-lagring og slette alle lagrede filer? Handlingen kan ikke angres!"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"Vil du formatere SD-kortet og slette alle lagrede filer? Handlingen kan ikke angres!"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Slett alt"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Tegn opplåsingsmønsteret"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Du må tegne opplåsingsmønsteret for å bekrefte formatering av minnekortet."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Du må tegne opplåsingsmønsteret for å bekrefte formateringen av USB-lagring."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Du må tegne opplåsingsmønsteret for å bekrefte slettingen av SD-kortet."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Samtaleinnstillinger"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Telefonsvarer, viderekobling, samtale venter, nummervisning"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Tilknytning"</string>
     <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Flyttbar trådløs sone"</string>
-    <string name="tether_settings_title_both" msgid="2734066355556891504">"Tilknytning og flyttbar trådløs sone"</string>
+    <string name="tether_settings_title_both" msgid="2734066355556891504">"Tilknytning og trådløs sone"</string>
     <string name="tether_settings_summary_usb" msgid="3562431455625637370">"Del mobilens datatilkobling via USB-tilknytning"</string>
     <string name="tether_settings_summary_wifi" msgid="4690912027002467246">"Del telefonens datatilkobling via en flyttbar trådløs sone"</string>
     <string name="tether_settings_summary_both" msgid="7460063951190682635">"Del telefonens datatilkobling via USB eller en flyttbar trådløs sone"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Se plassering i applikasjoner (som kart) ved hjelp av trådløse nettverk"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Plassering bestemmes ved hjelp av trådløse og/eller mobile nettverk"</string>
     <string name="location_gps" msgid="6296125378829097831">"Bruk GPS-satellitter"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Nøyaktig til gatenivå (slå av for å spare batteri)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Nøyaktig til gatenivå"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Finn plassering på gatenivå (bruker mer batteri, og trenger fri sikt til himmelen)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Aktiver GPS med hjelp"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Bruk tjener til å hjelpe GPS (opphev for å redusere nettverksbruken)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Applikasjon"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Data"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Avinstaller"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Deaktiver"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Aktiver"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Fjern data"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Avinstaller oppdateringer"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Du har valgt å starte denne applikasjonen som standard for noen handlinger."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Ingen standardvalg satt."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Fjern standardvalg"</string>
     <string name="unknown" msgid="1592123443519355854">"Ukjent"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Sorter"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Sorter etter navn"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Sorter etter størrelse"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Vis kjørende tjenester"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Vis bufrede prosesser"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Styr plass"</string>
     <string name="filter" msgid="2018011724373033887">"Filter"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Velg filtreringsinnstillinger"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Alle"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Tredjeparts"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"Kjører"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"På minnekort"</string>
-    <string name="loading" msgid="3200408047793887917">"Laster…"</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"USB-lagring"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"På minnekort"</string>
+    <string name="disabled" msgid="9206776641295849915">"Deaktivert"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Ingen programmer."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Intern lagring"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USB-lagring"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SD-kortlagring"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Beregner størrelse på nytt…"</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Slett"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"All informasjon du har lagret i denne applikasjonen vil bli fjernet permanent."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"versjon <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Flytt"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Flytt til telefonen"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Flytt til minnekort"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Flytt til USB-lagring"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Flytt til minnekort"</string>
     <string name="moving" msgid="6431016143218876491">"Flytter"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Det er ikke nok lagringsminne."</string>
     <string name="does_not_exist" msgid="837163572898468245">"Programmet fins ikke."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"Den angitte installasjonsplasseringen er ikke gyldig."</string>
     <string name="system_package" msgid="1030561474413022831">"Systemoppdateringer kan ikke installeres på eksterne medier."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Tving avslutning"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Programmet startes på nytt med en gang. Er du sikker på at du vil avslutte?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Hvis du slår av et program ved tvang, kan det slutte å fungere. Er du sikker på at du vil fortsette?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Flytt program"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Fikk ikke flyttet programmet. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Foretrukket installeringssted"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Endre foretrukket plassering for installasjon av nye programmer."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Bruk av lagringsplass"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Vis lagringsplass for programmer"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Kjørende tjenester"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Vis og kontroller tjenester som kjører for øyeblikket"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Starter på nytt"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Ingen kjørende tjenester"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Stoppe tjenesten?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"Tjenesten kjører ikke før den startes på nytt. Dette kan føre til uønskede konsekvenser for <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Stopp"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Avbryt"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Startet av applikasjon: trykk for å stoppe"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: trykk for å endre"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Tilgj.:<xliff:g id="FREE">%2$s</xliff:g> + <xliff:g id="MEMORY">%3$s</xliff:g> i <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Andre: <xliff:g id="MEMORY">%2$s</xliff:g> (<xliff:g id="COUNT">%1$d</xliff:g> pros.)"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Prosess: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Bufret bakgrunnsprosess"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Ingenting kjører."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Startet av program."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> grts."</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> brukt"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> prosess og <xliff:g id="NUMSERVICES">%2$d</xliff:g> tjeneste"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> prosesser og <xliff:g id="NUMSERVICES">%2$d</xliff:g> tjenester"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> prosesser og <xliff:g id="NUMSERVICES">%2$d</xliff:g> tjeneste"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g><xliff:g id="NUMSERVICES">%2$d</xliff:g> prosesser og tjenester"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Programmet som kjører"</string>
+    <string name="no_services" msgid="7133900764462288263">"Ikke aktiv"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Tjenester"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Prosesser"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Stopp"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Innstillinger"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Denne tjenesten ble startet av det tilhørende programmet. Hvis du stopper tjenesten, er det ikke sikkert programmet fungerer slik det skal."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Dette programmet kan ikke stoppes på en trygg måte. Noe av arbeidet ditt kan gå tapt."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Denne er en gammel programprosess som beholdes for økt hastighet ved behov. Du trenger ikke stoppe den."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: for øyeblikket i bruk. Berør Innstillinger for å endre."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Hovedprosess som er i bruk."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Tjenesten <xliff:g id="COMP_NAME">%1$s</xliff:g> er i bruk."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Leverandøren <xliff:g id="COMP_NAME">%1$s</xliff:g> er i bruk."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Vil du stoppe systemtjenesten?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Er du sikker på at du vil stoppe denne systemtjenesten? I så fall kan det hende at enkelte funksjoner på telefonen kan slutte å fungere slik de skal, inntil du slår telefonen av og på igjen."</string>
     <string name="language_settings" msgid="502219872342167227">"Språk og tastatur"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Språk og tastatur"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Innstillinger for språk, region, skriving av tekst og feilretting"</string>
-    <string name="language_category" msgid="3391756582724541530">"Innstillinger for språk"</string>
-    <string name="text_category" msgid="6342540511465136739">"Tekstinnstillinger"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Språkinnstillinger"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Tastaturinnstillinger"</string>
     <string name="phone_language" msgid="1165758957501090679">"Velg språk"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Automatisk erstatting"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Testing"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Telefoninformasjon"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Batteriinformasjon"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Batterihistorikk"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Hurtigtaster"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Tastatursnarveier for å starte applikasjoner"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Tilordne applikasjon"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Innstillinger for skriving av tekst"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Innstillinger for <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Innstillinger for skjermtastatur"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Fysisk tastatur"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Innstillinger for innebygget tastatur"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Innebygd tastatur"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Innstillinger for innebygd tastatur"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Utvikling"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Innstillinger for applikasjonsutvikling"</string>
     <string name="enable_adb" msgid="7982306934419797485">"USB-debugging"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"USB-debugging er kun ment for utviklere. Det kan brukes for å kopiere data mellom datamaskinen og telefonen, installere applikasjoner på telefonen i det stille, og lese loggdata."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Velg gadget"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Velg skrivebordselement"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Detaljer for UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Nettbruk av <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Byte mottatt: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Byte sendt: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Totalt antall byte: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"CPU-bruk av <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Brukertid:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Systemtid:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Total tid:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Oppstarter: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g>d <xliff:g id="HOURS">%2$d</xliff:g>t <xliff:g id="MINUTES">%3$d</xliff:g>m <xliff:g id="SECONDS">%4$d</xliff:g>s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g>t <xliff:g id="MINUTES">%2$d</xliff:g>m <xliff:g id="SECONDS">%3$d</xliff:g>s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g>m <xliff:g id="SECONDS">%2$d</xliff:g>s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g>s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Pakker som deler denne UID-en:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Ingen batterihistorikk tilgjengelig"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Sensor:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Delvis våkelås:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Sensor brukt av pakker:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Brukt <xliff:g id="COUNT">%1$d</xliff:g> ganger av <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Brukt <xliff:g id="COUNT">%1$d</xliff:g> ganger av en av:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Kjørende"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Skjerm på"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Telefon på"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Tid brukt uten å sove:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Tid brukt med skjermen på:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Tid brukt med telefonen på:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"På batteri:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"På nettstrøm:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Bruksstatistikk"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Bruksstatistikk"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Sorter etter:"</string>
@@ -859,18 +902,25 @@
     <string name="accessibility_service_no_apps_title" msgid="898893674114288531">"Finner ingen tilgjengelighetsprogrammer"</string>
     <string name="accessibility_service_no_apps_message" msgid="2450056749545404807">"Du har ikke installert et tilgjengelighetsprogram."\n\n"Du kan laste ned en skjermleser for enheten på Android-markedet."\n\n"Klikk på OK for å installere skjermleseren."</string>
     <string name="accessibility_power_button_category" msgid="8545885236482339928">"På/av-knapp"</string>
-    <string name="accessibility_power_button_ends_call" msgid="7698764194501089533">"Avslutt samtale med på/av-knappen"</string>
+    <string name="accessibility_power_button_ends_call" msgid="7698764194501089533">"Legg på med på/av"</string>
     <string name="accessibility_power_button_ends_call_summary" msgid="8878097632186291462">"Ved å trykke på av-knappen under en samtale, avsluttes samtalen i stedet for at skjermen slås av"</string>
     <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>
     <string name="battery_since_reset" msgid="7464546661121187045">"Batteribruk siden omstart"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> på batteri"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> siden strømmen ble frakoblet"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Lader"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Skjerm på"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS på"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Aktiv"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Telefonsignal"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Tid enheten har vært våken"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"Tid trådløsnettet har vært aktivt"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"Tid Bluetooth har vært aktivt"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Wi-Fi on time"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Wi-Fi on time"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> – <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Detaljert batteribrukinformasjon"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Bruksdetaljer"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Telefonen ikke i bruk"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"Prosessor totalt"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"Prosessor i forgrunnen"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Behold aktiv"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"WiFi kjører"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Telefon"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Data sendt"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Data mottatt"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Info om applikasjon"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Innstillinger for applikasjon"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Innstillinger for skjerm"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Innstillinger for trådløsnett"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Innstillinger for Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Innstillinger for Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Batteri brukt av telefonsamtaler"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Batteri brukt når telefonen ikke er i bruk"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batteri brukt av Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Slå av Bluetooth når det ikke er i bruk"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Prøv å koble til en annen Bluetooth-enhet"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Batteri brukt av applikasjoner som ikke kjøres"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Batteri brukt av program"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Stopp eller avinstaller applikasjonen"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Skru av GPS når den ikke er i bruk"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Kontroller GPS manuelt, for å forhindre at programmer bruker funksjonen"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"Applikasjonen har muligens innstillinger som kan redusere batteribruken"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> siden strømmen ble frakoblet"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Siste gang uten strøm i <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Ikke installert"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Kvinne"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Mann"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Talesyntesemotor installert"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Aktiver ny motor før bruk"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Gir applikasjoner tilgang til sikre sertifikater og andre akkreditiver"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Velg passord"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Skriv inn passordet for akkreditivlageret"</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Installer fra minnekort"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Installer krypterte sertifikater fra minnekort"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Installer fra USB-lagr."</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Installer fra minnekort"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Inst. sert. fra USB-lagr."</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Installer krypterte sertifikater fra minnekort"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Velg passord"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Velg eller endre passord for akkreditivlageret"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Tøm lager"</string>
@@ -1068,18 +1124,28 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Kryptert filsystem"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Krypter private brukerdata"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Aktiver lagring av krypterte filer for private brukerdata på denne enheten"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Aktivering av krypterte filsystemer krever en fullstendig datarensing."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Deaktivering av krypterte filsystemer krever en fullstendig datarensing."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Aktiver"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Deaktiver"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Avbryt"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Endring av modus for kryptert filsystem er avbrutt."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Advarsel om kryptert filsystem."</string>
     <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>
     <string name="privacy_settings_title" msgid="1987089301293213705">"Personverninnstillinger"</string>
     <string name="backup_section_title" msgid="8856083167469467588">"Sikkerhetskopiering og gjenoppretting"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Personlige data"</string>
-    <string name="backup_data_title" msgid="1239105919852668016">"Sikkerhetskopier dataene"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Sikkerhetskopier innstillingene og andre programdata."</string>
+    <string name="backup_data_title" msgid="1239105919852668016">"Sikkerhetskopier data"</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Sikkerhetskopier programdata, Wi-Fi-passord og andre innstillinger til Googles tjenere"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Auto-gjenoppretting"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Gjenopprett sikkerhetskopierte innstillinger og andre data hvis jeg installerer et program på nytt."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Gjenopprett sikkerhetskopierte innstillinger og andre data hvis jeg installerer et program på nytt"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Sikkerhetskopi"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Er du sikker på at du ønsker å slutte med backup av innstillinger og programdata og fjerne alle kopier på Googles tjenere?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Er du sikker på at du ønsker å avslutte sikkerhetskopiering av Wi-Fi-passord, bokmerker og andre innstillinger og programdata og slette alle kopier på Googles tjenere?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Innstillinger for enhetsadministrasjon"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Enhetsadministrator"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Deaktiver"</string>
diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml
index de010e5..95050d5 100644
--- a/res/values-nl/arrays.xml
+++ b/res/values-nl/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Nooit indien aangesloten"</item>
     <item msgid="1986753720941888596">"Nooit"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"CPU-gebruik"</item>
-    <item msgid="6401018715947316517">"Netwerkgebruik"</item>
-    <item msgid="188092590354892392">"GPS-gebruik"</item>
-    <item msgid="8414109131222049141">"Sensorgebruik"</item>
-    <item msgid="1327904325081257093">"Gedeeltelijk wake-gebruik"</item>
-    <item msgid="4832254146664706277">"Ander gebruik"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Sinds laatste keer losgekoppeld"</item>
-    <item msgid="166936313535197598">"Totaal sinds opstarten"</item>
-    <item msgid="4793941382744963893">"Totaal voor altijd"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Gebruikstijd"</item>
     <item msgid="1908750532762193304">"Aantal keer gestart"</item>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index c8f7d65..149e627 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"SD-kaart ontkoppelen"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"SD-kaart formatteren"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"USB-opslag ontkoppelen"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"SD-kaart ontkoppelen"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"USB-opslag wissen"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"SD-kaart wissen"</string>
     <string name="small_font" msgid="2295331917424072635">"Klein"</string>
     <string name="medium_font" msgid="2068475425515133701">"Gemiddeld"</string>
     <string name="large_font" msgid="599055175160971446">"Groot"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"SD-kaart"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-opslag"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-kaart"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Accustatus:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Voedingsstekker:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Accuschaal:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Wijzigingen worden van kracht als de USB-kabel opnieuw wordt aangesloten"</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"USB-massaopslag inschakelen"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Totaal aantal bytes:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Geen SD-kaart"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"USB-opslag niet gekoppeld"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Geen SD-kaart"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Beschikbare bytes:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"SD-kaart wordt gebruikt als apparaat voor massaopslag"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"U kunt de SD-kaart nu veilig verwijderen"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"De SD-kaart is verwijderd terwijl deze nog werd gebruikt!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USB-opslag wordt gebruikt als apparaat voor massaopslag"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"SD-kaart wordt gebruikt als apparaat voor massaopslag"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"U kunt de USB-opslag nu veilig verwijderen"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"U kunt de SD-kaart nu veilig verwijderen"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"USB-opslag verwijderd tijdens gebruik!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"De SD-kaart is verwijderd terwijl deze nog werd gebruikt!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Gebruikte bytes:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"SD-kaart scannen op media..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"Gekoppelde SD-kaart alleen-lezen"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"USB-opslag scannen op media..."</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"SD-kaart scannen op media..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"Gekopp. USB-opslag alleen-lezen"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"Gekoppelde SD-kaart alleen-lezen"</string>
     <string name="next_label" msgid="4693520878012668114">"Volgende"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Landinstelling"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Uw taal selecteren"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Activiteit selecteren"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Apparaatinfo"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Accu-info"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Accugeschiedenis"</string>
     <string name="display_label" msgid="7403874003169865762">"Weergave"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Telefooninfo"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"SD-kaart"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB-opslag"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SD-kaart"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Proxy-instellingen"</string>
     <string name="cancel" msgid="6859253417269739139">"Annuleren"</string>
     <string name="settings_label" msgid="1626402585530130914">"Instellingen"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Instellingen"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Instellingen"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Vliegmodus"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Alle draadloze verbindingen uitschakelen"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Als luidsprekertelefoon"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Voor muziek en media"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Instellingen onthouden"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Near Field Communication gebruiken om tags te lezen en uit te wisselen"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Wi-Fi inschakelen"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Wi-Fi-instellingen"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Overschakelen opgeven van Wi-Fi naar mobiele gegevens"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Er is een probleem opgetreden bij het instellen van het slaapbeleid."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MAC-adres"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP-adres"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"IP-instellingen"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Opslaan"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Annuleren"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
     <string name="device_status" msgid="607405385799807324">"Status"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Telefoonnummer, signaal, enzovoort"</string>
-    <string name="storage_settings" msgid="6681164315506788024">"SD-kaart en geheugen"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Instellingen SD-kaart en telefoongeheugen"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"SD-kaart ontkoppelen, beschikbare opslagruimte weergeven"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Opslagruimte"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Instellingen voor opslag"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"USB-opslag ontkoppelen, beschikbare opslag weergeven"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"SD-kaart ontkoppelen, beschikbare opslagruimte weergeven"</string>
     <string name="status_number" msgid="5123197324870153205">"Mijn telefoonnummer"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"PRL-versie"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Niet beschikbaar"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Bedrijfstijd"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Stand-bytijd"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Intern telefoongeheugen"</string>
-    <string name="sd_memory" msgid="151871913888051515">"SD-kaart"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Interne opslag"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"USB-opslag"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"SD-kaart"</string>
     <string name="memory_available" msgid="418542433817289474">"Beschikbare ruimte"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Plaats een SD-kaart om deze te koppelen"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"SD-kaart koppelen"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"De SD-kaart koppelen"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"SD-kaart ontkoppelen"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Interne USB-opslag ontkoppelen"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Ontkoppel de SD-kaart zodat u deze veilig kunt verwijderen"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"USB-opslag plaatsen voor koppelen"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Plaats een SD-kaart om deze te koppelen"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Gedeelde opslag koppelen"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"SD-kaart koppelen"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Interne USB-opslag koppelen"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"De SD-kaart koppelen"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"USB-opslag wissen"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"SD-kaart wissen"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Hiermee worden alle gegevens in de interne USB-opslag van de telefoon gewist, zoals muziek en foto\'s"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Hiermee worden alle gegevens op de SD-kaart van de telefoon gewist, zoals muziek en foto\'s"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Niet beschikbaar"</string>
     <string name="read_only" msgid="6702420168629076340">" (Alleen-lezen)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"SD-kaart ontkoppelen"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Als u de SD-kaart ontkoppelt, worden bepaalde toepassingen die u gebruikt, gestopt en worden deze mogelijk pas weer beschikbaar wanneer u de SD-kaart opnieuw koppelt."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Ontkoppelen van SD-kaart is mislukt"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"Kan SD-kaart niet ontkoppelen. Probeer het later opnieuw."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"SD-kaart wordt ontkoppeld. Controleer het gedeelte met meldingen voor de status."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"USB-opslag ontkoppelen"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"SD-kaart ontkoppelen"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Als u de USB-opslag ontkoppelt, worden bepaalde toepassingen die u gebruikt, gestopt en worden deze mogelijk pas weer beschikbaar wanneer u de USB-opslag opnieuw koppelt."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Als u de SD-kaart ontkoppelt, worden bepaalde toepassingen die u gebruikt, gestopt en worden deze mogelijk pas weer beschikbaar wanneer u de SD-kaart opnieuw koppelt."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Ontkoppelen USB-opslag mislukt"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Ontkoppelen van SD-kaart is mislukt"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"Kan USB-opslag niet koppelen. Probeer het later opnieuw."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"Kan SD-kaart niet ontkoppelen. Probeer het later opnieuw."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"USB-opslag wordt ontkoppeld."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"SD-kaart wordt ontkoppeld."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Ontkoppelen"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Ontkoppelen wordt uitgevoerd"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Accustatus"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Herstellen van standaard-APN-instellingen voltooid"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Fabrieksinstellingen terug"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Alle gegevens op de telefoon wissen"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Deze functie wist alle gegevens van uw telefoon, waaronder:"\n<li>"Uw Google-account"</li>\n<li>"Systeem- en toepassingsgegevens en -instellingen"</li>\n<li>"Gedownloade toepassingen"</li>"De volgende gegevens worden niet gewist:"\n\n<li>"Huidige systeemsoftware en gebundelde toepassingen"</li>\n<li>"Bestanden op de SD-kaart, zoals muziek en foto\'s"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Hiermee worden alle gegevens in de "<b>"interne opslag"</b>" van uw telefoon gewist, waaronder:"\n\n<li>"Uw Google-account"</li>\n<li>"Gegevens en instellingen van het systeem en de toepassingen"</li>\n<li>"Gedownloade toepassingen"</li>\n\n"Als u alle gegevens op deze telefoon wilt wissen, moet de "<b>"USB-opslag"</b>" worden gewist."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Hiermee worden alle gegevens in de "<b>"interne opslag"</b>" van uw telefoon gewist, waaronder:"\n\n<li>"Uw Google-account"</li>\n<li>"Gegevens en instellingen van het systeem en de toepassingen"</li>\n<li>"Gedownloade toepassingen"</li>\n\n"Als u ook muziek, foto\'s en andere gegevens wilt wissen, moet de "<b>"SD-kaart"</b>" worden gewist."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"USB-opslag wissen"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"SD-kaart wissen"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Alle gegevens in de interne USB-opslag van de telefoon wissen, zoals muziek en foto\'s."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Alle gegevens op de SD-kaart van de telefoon wissen, zoals muziek en foto\'s."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Telefoon opnieuw instellen"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Alle persoonlijke gegevens en gedownloade toepassingen wissen? U kunt deze actie niet ongedaan maken."</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Alles wissen"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Teken uw ontgrendelingspatroon"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"U moet uw ontgrendelingspatroon tekenen om het opnieuw instellen van de telefoon te bevestigen."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Niet opnieuw ingesteld, omdat de service \'Systeem wissen\' niet beschikbaar is."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"SD-kaart formatteren."</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Alle gegevens op de SD-kaart wissen"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Deze actie wist de gegevens van de SD-kaart die in de telefoon is geplaatst. ALLE gegevens op de kaart gaan dan verloren."</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"SD-kaart formatteren"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Wilt u de SD-kaart formatteren en al uw mediabestanden wissen? Deze actie kan niet ongedaan worden gemaakt."</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"USB-opslag wissen"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"SD-kaart wissen"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Alle gegevens in USB-opslag wissen"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Alle gegevens op de SD-kaart wissen"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Met deze actie wordt de USB-opslag gewist. "<b>"Alle"</b>" opgeslagen gegevens gaan verloren!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Met deze actie wordt de SD-kaart gewist. "<b>"Alle"</b>" gegevens op de kaart gaan verloren!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"USB-opslag wissen"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"SD-kaart wissen"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"USB-opslag formatteren en alle opgeslagen bestanden wissen? Actie kan niet ongedaan worden gemaakt."</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"SD-kaart wissen en alle opgeslagen bestanden verwijderen? Actie kan niet ongedaan worden gemaakt."</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Alles wissen"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Teken uw ontgrendelingspatroon"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"U moet uw ontgrendelingspatroon tekenen om het formatteren van een SD-kaart te bevestigen."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"U moet het ontgrendelingspatroon tekenen om te bevestigen dat u de USB-opslag wilt formatteren."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"U moet het ontgrendelingspatroon tekenen om te bevestigen dat u de SD-kaart wilt wissen."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Oproepinstellingen"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Voicemail, oproepen doorschakelen, wisselgesprek, beller-id instellen"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Tethering"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Locatie in toepassingen (zoals Maps) bekijken via draadloze netwerken"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Locatie bepaald door Wi-Fi en/of mobiele netwerken"</string>
     <string name="location_gps" msgid="6296125378829097831">"GPS-satellieten"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Locatie tot op straatniveau (uitschakelen om acculading te sparen)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Bij lokaliseren nauwkeurig tot straatniveau"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Locatie bepalen tot op straatniveau (meer stroom nodig en luchtweergave)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Ondersteunde GPS gebruiken"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Server gebruiken ter ondersteuning van GPS (uitschakelen om het netwerkgebruik te beperken)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Toepassing"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Gegevens"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Verwijderen"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Uitschakelen"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Inschakelen"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Gegevens wissen"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Updates verwijderen"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"U heeft ervoor gekozen om deze toepassing standaard te starten voor bepaalde acties."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Geen standaardwaarden ingesteld."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Standaardwaarden wissen"</string>
     <string name="unknown" msgid="1592123443519355854">"Onbekend"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Sorteren"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Sorteren op naam"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Sorteren op grootte"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Actieve services weergeven"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Gecachte processen weerg."</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Ruimte beheren"</string>
     <string name="filter" msgid="2018011724373033887">"Filter"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Filteropties selecteren"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Alles"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Gedownload"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"Wordt uitgevoerd"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"Op SD-kaart"</string>
-    <string name="loading" msgid="3200408047793887917">"Laden..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"USB-opslag"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"Op SD-kaart"</string>
+    <string name="disabled" msgid="9206776641295849915">"Uitgeschakeld"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Geen toepassingen."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Interne opslag"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USB-opslag"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SD-kaartopslag"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Grootte opnieuw berekenen..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Verwijderen"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Alle gegevens van deze toepassing worden permanent verwijderd. Dit omvat alle bestanden, instellingen, accounts, databases, enzovoort."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"versie <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Verplaatsen"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Verplaatsen naar telefoon"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Verplaatsen naar SD-kaart"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Verpl. naar USB-opslag"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Verplaatsen naar SD-kaart"</string>
     <string name="moving" msgid="6431016143218876491">"Verplaatsen"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Er is niet voldoende opslag beschikbaar."</string>
     <string name="does_not_exist" msgid="837163572898468245">"De toepassing bestaat niet."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"De opgegeven installatielocatie is niet geldig."</string>
     <string name="system_package" msgid="1030561474413022831">"Systeemupdates kunnen niet worden geïnstalleerd op externe media."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Gedwongen stoppen"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Deze toepassing wordt onmiddellijk opnieuw gestart. Weet u zeker dat u gedwongen wilt stoppen?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Als u een toepassing geforceerd stopt, kan de toepassing zich onverwacht gedragen. Weet u het zeker?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Toepassing verplaatsen"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Verplaatsen van toepassing is mislukt. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Voorkeursinstallatielocatie"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"De voorkeursinstallatielocatie voor nieuwe toepassingen wijzigen."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Opslaggebruik"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Gebruikte opslagruimte voor toepassingen weergeven"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Actieve services"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Services die momenteel actief zijn, weergeven en beheren"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Opnieuw starten"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Er zijn geen actieve services"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Service stopzetten?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"De service wordt niet langer uitgevoerd totdat deze opnieuw wordt gestart. Dit heeft mogelijk nadelige gevolgen voor de toepassing <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Stoppen"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Annuleren"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Gestart door toepassing: aanraken om te stoppen"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: aanraken om te beheren"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Beschikbaar: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> in <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Overig: <xliff:g id="MEMORY">%2$s</xliff:g> in <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Proces: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Gecacht achtergrondproces"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Niets wordt uitgevoerd."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Gestart door toepassing."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> vrij"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> gebr."</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> proces en <xliff:g id="NUMSERVICES">%2$d</xliff:g> service"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> proces en <xliff:g id="NUMSERVICES">%2$d</xliff:g> services"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processen en <xliff:g id="NUMSERVICES">%2$d</xliff:g> service"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processen en <xliff:g id="NUMSERVICES">%2$d</xliff:g> services"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Uitgevoerde toepassing"</string>
+    <string name="no_services" msgid="7133900764462288263">"Niet actief"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Services"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Processen"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Stoppen"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Instellingen"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Deze service is gestart door de toepassing. Als de service wordt gestopt, kan de toepassing vastlopen."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Deze toepassing kan niet veilig worden gestopt. Als de toepassing wordt gestopt, kunt u een deel van uw huidige werk kwijtraken."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Dit is een oud toepassingsproces dat is behouden voor hogere snelheid in geval het weer nodig is. Er is meestal geen reden om dit te stoppen."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: momenteel in gebruik. Raak \'Instellingen\' aan om dit te bedienen."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Hoofdproces dat in gebruik is."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Service <xliff:g id="COMP_NAME">%1$s</xliff:g> in gebruik."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Provider <xliff:g id="COMP_NAME">%1$s</xliff:g> in gebruik."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Systeemservice stoppen?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Weet u zeker dat u deze systeemservice wilt stoppen? Als u dit doet, werken bepaalde functies van uw telefoon mogelijk pas weer correct nadat u de telefoon heeft uitgeschakeld en weer ingeschakeld."</string>
     <string name="language_settings" msgid="502219872342167227">"Taal en toetsenbord"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Taal- en toetsenbordinstellingen"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Instellingen voor taal en regio, tekstinvoer en autocorrectieopties opgeven"</string>
-    <string name="language_category" msgid="3391756582724541530">"Landinstelling"</string>
-    <string name="text_category" msgid="6342540511465136739">"Tekstinstellingen"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Taalinstellingen"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Toetsenbordinstellingen"</string>
     <string name="phone_language" msgid="1165758957501090679">"Taal selecteren"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Automatisch vervangen"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Testen"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Telefooninformatie"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Accu-informatie"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Accugeschiedenis"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Snelstarten"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Sneltoetsen instellen voor starten toepassingen"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Toepassing toewijzen"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Opties voor tekstinvoer beheren"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Instellingen voor <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Instellingen voor schermtoetsenbord"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Apparaattoetsenbord"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Instellingen voor ingebouwd toetsenbord"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Geïntegreerd toetsenbord"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Geïntegreerde, fysieke toetsenbordinstellingen"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Ontwikkeling"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Opties instellen voor toepassingsontwikkeling"</string>
     <string name="enable_adb" msgid="7982306934419797485">"USB-foutopsporing"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"USB-foutopsporing is alleen bedoeld voor ontwikkelingsdoeleinden. Het kan worden gebruikt om gegevens te kopiëren tussen uw computer en uw apparaat, om toepassingen zonder melding op uw apparaat te installeren en om loggegevens te lezen."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Gadget kiezen"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Widget kiezen"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Details voor UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Netwerkgebruiksdetails voor <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Bytes ontvangen: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Bytes verzonden: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Totaal aantal bytes: <xliff:g id="BYTES">%1$d</xliff:g>\n"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"CPU-gebruiksdetails voor <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Gebruikerstijd:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Systeemtijd:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Totale tijdsduur:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Aantal keren gestart: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g>d <xliff:g id="HOURS">%2$d</xliff:g>u <xliff:g id="MINUTES">%3$d</xliff:g>m <xliff:g id="SECONDS">%4$d</xliff:g>s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g>u <xliff:g id="MINUTES">%2$d</xliff:g>m <xliff:g id="SECONDS">%3$d</xliff:g>s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g>m <xliff:g id="SECONDS">%2$d</xliff:g>s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g>s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Pakketten die deze UID delen:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Er zijn geen beschikbare gebruiksgegevens van de accu"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Sensor:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Gedeeltelijke wakelock:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"De sensor wordt gebruikt door de volgende pakketten:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"<xliff:g id="COUNT">%1$d</xliff:g> keer gebruikt door <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"<xliff:g id="COUNT">%1$d</xliff:g> keer gebruikt door een van de volgende:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Wordt uitgevoerd"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Scherm aan"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Telefoon aan"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Tijd verstreken zonder slaapstand:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Tijd verstreken met scherm aan:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Tijd verstreken met telefoon aan:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"Op accu:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Opladen:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Gebruiksstatistieken"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Gebruiksstatistieken"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Sorteren op:"</string>
@@ -865,12 +908,19 @@
     <string name="power_usage_summary" msgid="7237084831082848168">"Waarvoor de accu is gebruikt"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Accugebruik sinds losgekoppeld"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"Accugebruik sinds herstel"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> op accu"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> sinds losgekoppeld"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Opladen"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Scherm aan"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS ingeschakeld"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Ingeschakeld"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Telefoonsignaal"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Stand-bytijd apparaat"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"Tijd Wi-Fi aan"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"Tijd Wi-Fi aan"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Wi-Fi op tijd"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Wi-Fi op tijd"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Details over accugebruik"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Gebruiksdetails"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Telefoon inactief"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"CPU-totaal"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPU op voorgrond"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Ingeschakeld houden"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Wi-Fi actief"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Telefoon"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Gegevens verzonden"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Gegevens ontvangen"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Toepassingsinfo"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Toepassingsinstellingen"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Instellingen weergeven"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Wi-Fi-instellingen"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Wi-Fi-instellingen"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Bluetooth-instellingen"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Accu gebruikt door spraakoproepen"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Accu gebruikt wanneer telefoon inactief is"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Accu gebruikt door Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Schakel Bluetooth uit wanneer u deze functie niet gebruikt"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Probeer verbinding te maken met een ander Bluetooth-apparaat"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Accu gebruikt door actieve toepassingen"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Accu gebruikt door toepassing"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"De toepassing stoppen of verwijderen"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Schakel GPS uit wanneer u dit niet gebruikt"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"GPS handmatig beheren om te voorkomen dat de toepassing hiervan gebruikmaakt"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"De toepassing kan instellingen aanbieden om het accugebruik te beperken"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> sinds losgekoppeld"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Sinds laatst losgekoppeld voor <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Niet geïnstalleerd"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Vrouw"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Man"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Spraaksynthese-engine is geïnstalleerd"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Nieuwe engine inschakelen vóór gebruik"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Toepassingen mogen veilige certificaten en andere referenties openen"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Voer het wachtwoord in"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Geef het wachtwoord voor de opslag van referenties op."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Installeren van SD-kaart"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Gecodeerde certificaten installeren vanaf SD-kaart"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Installeren uit USB-opslag"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Installeren van SD-kaart"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Gecodeerde certificaten van USB-opslag installeren"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Gecodeerde certificaten installeren vanaf SD-kaart"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Wachtwoord instellen"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Het wachtwoord voor de opslag van referenties instellen"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Opslag wissen"</string>
@@ -1068,6 +1124,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Gecodeerde bestandssysteem"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Persoonlijke gebruikersgegevens coderen"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Gecodeerde bestandssysteemopslag voor persoonlijke gebruikersgegevens inschakelen op dit apparaat"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Voor het inschakelen van gecodeerde bestandssystemen is het wissen van apparaatgegevens vereist."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Voor het uitschakelen van gecodeerde bestandssystemen is het wissen van apparaatgegevens vereist."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Inschakelen"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Uitschakelen"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Annuleren"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Het wijzigen van de gecodeerde bestandssysteemmodus is geannuleerd."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Waarschuwing voor gecodeerde bestandssystemen."</string>
     <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>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Back-up maken en terugzetten"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Persoonlijke gegevens"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Back-up maken van mijn gegevens"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Back-up maken van mijn instellingen en andere toepassingsgegevens."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Een back-up van toepassingsgegevens, Wi-Fi-wachtwoorden en andere instellingen maken op de Google-servers"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Automatisch terugzetten"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"In een back-up opgeslagen instellingen of andere gegevens herstellen als ik een toepassing opnieuw installeer."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"In een back-up opgeslagen instellingen of andere gegevens herstellen als ik een toepassing opnieuw installeer"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Back-up"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Weet u zeker dat het maken van back-ups van uw instellingen en toepassingsgegevens wilt stoppen en alle kopieën op Google-servers wilt wissen?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Weet u zeker dat u het maken van back-ups van uw Wi-Fi-wachtwoorden, bladwijzers en andere instellingen en toepassingsgegevens wilt stoppen en alle kopieën op Google-servers wilt wissen?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Instellingen voor apparaatbeheer"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Apparaatbeheerder"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Deactiveren"</string>
diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml
index 2fb3c7e..5419716 100644
--- a/res/values-pl/arrays.xml
+++ b/res/values-pl/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Nigdy, gdy podłączony"</item>
     <item msgid="1986753720941888596">"Nigdy"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"Wykorzystanie procesora"</item>
-    <item msgid="6401018715947316517">"Wykorzystanie sieci"</item>
-    <item msgid="188092590354892392">"Wykorzystanie modułu GPS"</item>
-    <item msgid="8414109131222049141">"Wykorzystanie czujnika"</item>
-    <item msgid="1327904325081257093">"Wykorzystanie przy częściowym wybudzeniu"</item>
-    <item msgid="4832254146664706277">"Inne wykorzystanie"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Od ostatniego odłączenia"</item>
-    <item msgid="166936313535197598">"Łącznie od uruchomienia"</item>
-    <item msgid="4793941382744963893">"Łącznie przez cały czas"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Czas użycia"</item>
     <item msgid="1908750532762193304">"Licznik uruchomień"</item>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index f9c6af4..6af7b4e 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Odłącz kartę SD"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Formatuj kartę SD"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Odłącz nośnik USB"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Odłącz kartę SD"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Wyczyść nośnik USB"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Wyczyść kartę SD"</string>
     <string name="small_font" msgid="2295331917424072635">"Mały"</string>
     <string name="medium_font" msgid="2068475425515133701">"Średni"</string>
     <string name="large_font" msgid="599055175160971446">"Duży"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"Karta SD"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Nośnik USB"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Karta SD"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Stan baterii:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Podłączone zasilanie:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Poziom baterii:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Zmiany zostaną wprowadzone po ponownym podłączeniu przewodu USB"</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Włącz pamięć masową USB"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Łącznie bajtów:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Brak karty SD"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"Nośnik USB nie jest podłączony"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Brak karty SD"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Dostępnych bajtów:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"Karta SD wykorzystywana jest jako pamięć masowa"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"Można teraz bezpiecznie usunąć kartę SD"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"Karta SD została usunięta, gdy była używana!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"Nośnik USB jako pamięć masowa"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"Karta SD wykorzystywana jest jako pamięć masowa"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"Można teraz wyjąć nośnik USB"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"Można teraz bezpiecznie usunąć kartę SD"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"Wyjęto USB podczas używania."</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"Karta SD została usunięta, gdy była używana!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Wykorzystanych bajtów:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Przeszukiwanie karty SD w poszukiwaniu multimediów..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"Karta SD jest podłączona tylko do odczytu"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Trwa skanowanie nośnika USB…"</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Przeszukiwanie karty SD w poszukiwaniu multimediów..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"Nośnik USB podłącz. do odczytu"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"Karta SD jest podłączona tylko do odczytu"</string>
     <string name="next_label" msgid="4693520878012668114">"Dalej"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Ustawienia regionalne"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Wybierz język"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Wybierz czynność"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Informacje o urządzeniu"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Informacje o baterii"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Historia baterii"</string>
     <string name="display_label" msgid="7403874003169865762">"Wyświetlacz"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Informacje o telefonie"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"Karta SD"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"Nośnik USB"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"Karta SD"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Ustawienia proxy"</string>
     <string name="cancel" msgid="6859253417269739139">"Anuluj"</string>
     <string name="settings_label" msgid="1626402585530130914">"Ustawienia"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Ustawienia"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Ustawienia"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Tryb samolotowy"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Wyłącz wszystkie połączenia bezprzewodowe"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Jako telefon w trybie głośnika"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Dla muzyki i multimediów"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Zapamiętaj ustawienia"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"Komunikacja NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Używaj komunikacji Near Field Communication do odczytywania i wymiany tagów"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Włącz Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Ustawienia Wi-Fi"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Określ, kiedy przełączyć Wi-Fi na komórkowe połączenie danych"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Wystąpił problem podczas ustawiania zasad usypiania."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"Adres MAC"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"Adres IP"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"Ustawienia IP"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Zapisz"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Anuluj"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Informacje o telefonie"</string>
     <string name="device_status" msgid="607405385799807324">"Informacje o telefonie"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Numer telefonu, sygnał itd."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"Karta SD i pamięć telefonu"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Ustawienia karty SD i pamięci telefonu"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Odłącz kartę SD, pokaż ilość dostępnej pamięci w telefonie"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Pamięć"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Ustawienia pamięci"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Odłącz nośnik USB i wyświetl ilość dostępnej pamięci"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Odłącz kartę SD, pokaż ilość dostępnej pamięci w telefonie"</string>
     <string name="status_number" msgid="5123197324870153205">"Mój numer telefonu"</string>
     <string name="status_min_number" msgid="3519504522179420597">"Numer MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"Wersja listy PRL"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Niedostępny"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Czas działania"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Czas działania (włączony)"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Pamięć wewnętrzna telefonu"</string>
-    <string name="sd_memory" msgid="151871913888051515">"Karta SD"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Pamięć wewnętrzna"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"Nośnik USB"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"Karta SD"</string>
     <string name="memory_available" msgid="418542433817289474">"Dostępne miejsce"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Włóż kartę SD w celu zainstalowania"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Zainstaluj kartę SD"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Zainstaluj kartę SD"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"Odłącz kartę SD"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Odłącz wewnętrzny nośnik USB"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Odłącz kartę SD, aby bezpiecznie ją wyjąć"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Włóż USB do podłączenia"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Włóż kartę SD w celu zainstalowania"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Podłącz pamięć współdzieloną"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Zainstaluj kartę SD"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Podłącz wewnętrzny nośnik USB"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Zainstaluj kartę SD"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Wyczyść nośnik USB"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Wyczyść kartę SD"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Wymazuje wszystko z wewn. USB"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Wymazuje wszystkie dane z karty SD telefonu, takie jak muzyka czy zdjęcia"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Niedostępna"</string>
     <string name="read_only" msgid="6702420168629076340">" (Tylko do odczytu)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Odinstaluj kartę SD"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Jeśli odinstalujesz kartę SD, niektóre używane aplikacje zostaną zatrzymane i mogą być niedostępne do chwili jej ponownego zainstalowania."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Odinstalowanie karty SD nie powiodło się"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"Nie można odinstalować karty SD. Spróbuj ponownie później."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"Karta SD zostanie odinstalowana. Sprawdź stan w obszarze powiadomień."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Odłącz nośnik USB"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Odinstaluj kartę SD"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Jeśli odłączysz nośnik USB, niektóre używane aplikacje zostaną zatrzymane i mogą być niedostępne do momentu ponownego podłączenia tego nośnika USB."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Jeśli odinstalujesz kartę SD, niektóre używane aplikacje zostaną zatrzymane i mogą być niedostępne do chwili jej ponownego zainstalowania."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Niepowodzenie odłączania USB"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Odinstalowanie karty SD nie powiodło się"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"Nie można odłączyć nośnika USB. Spróbuj ponownie później."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"Nie można odinstalować karty SD. Spróbuj ponownie później."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"Nośnik USB zostanie odłączony."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"Karta SD zostanie odłączona."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Odinstalowywanie"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Odinstalowywanie w toku"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Stan baterii"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Zakończono resetowanie domyślnych ustawień APN"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Ustawienia fabryczne"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Wymazuje wszystkie dane w telefonie"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Spowoduje to wymazanie wszystkich danych w telefonie, w tym:"\n<li>"danych konta Google;"</li>\n<li>"danych i ustawień systemu oraz aplikacji;"</li>\n<li>"pobranych aplikacji."</li>\n"Nie zostaną wymazane:"\n<li>"bieżące oprogramowanie systemowe i dołączone aplikacje;"</li>\n<li>"pliki na kartach SD, takie jak utwory muzyczne i zdjęcia."</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Spowoduje to wymazanie wszystkich danych z "<b>"wewnętrznej pamięci"</b>" telefonu, w tym:"\n\n<li>"danych konta Google,"</li>\n<li>"danych i ustawień systemu oraz aplikacji,"</li>\n<li>"pobranych aplikacji."</li>\n\n"Aby usunąć wszystkie dane z tego telefonu, należy wyczyścić "<b>"nośnik USB"</b>"."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Spowoduje to wymazanie wszystkich danych z "<b>"wewnętrznej pamięci"</b>" telefonu, w tym:"\n\n<li>"danych konta Google,"</li>\n<li>"danych i ustawień systemu oraz aplikacji,"</li>\n<li>"pobranych aplikacji."</li>\n\n"Aby usunąć również muzykę, zdjęcia i inne dane użytkownika, należy wyczyścić "<b>"kartę SD"</b>"."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Wyczyść nośnik USB"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Wyczyść kartę SD"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Wymaż wszystko z wewn. USB."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Wymaż wszystko z karty SD."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Resetuj telefon"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Czy usunąć wszystkie informacje osobiste i wszystkie pobrane aplikacje? Tej operacji nie można cofnąć!"</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Wymaż wszystko"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Narysuj wzór odblokowania"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Aby potwierdzić resetowanie telefonu, musisz narysować swój wzór odblokowania."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Nie wykonano resetowania, ponieważ usługa czyszczenia systemu nie jest dostępna."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Formatuj kartę SD."</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Wymazuje wszystkie dane z karty SD"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Ta akcja spowoduje wymazanie danych z karty SD w telefonie. WSZYSTKIE dane na karcie zostaną utracone."</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Formatuj kartę SD"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Czy sformatować kartę SD i wymazać wszystkie multimedia? Nie można cofnąć tej akcji!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Wyczyść nośnik USB"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Wyczyść kartę SD"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Wymazuje wszystko z nośnika USB"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Wymazuje wszystkie dane z karty SD"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Ta czynność spowoduje wymazanie nośnika USB. "<b>"Wszystkie"</b>" zapisane na nim dane zostaną utracone!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Ta czynność spowoduje wymazanie karty SD. "<b>"Wszystkie"</b>" zapisane na niej dane zostaną utracone!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Wyczyść nośnik USB"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Wyczyść kartę SD"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"Czy wyczyścić nośnik USB, usuwając wszystkie zapisane na nim pliki? Tej czynności nie można cofnąć."</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"Czy wyczyścić kartę SD, usuwając wszystkie zapisane na niej pliki? Tej czynności nie można cofnąć."</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Wymaż wszystko"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Narysuj wzór odblokowania"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Aby potwierdzić formatowanie karty SD, należy narysować swój wzór odblokowania."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Aby potwierdzić zamiar wyczyszczenia nośnika USB, musisz narysować wzór odblokowania."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Aby potwierdzić zamiar wyczyszczenia karty SD, musisz narysować wzór odblokowania."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Ustawienia połączeń"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Poczta głosowa, przekierowania połączeń, poł. oczekujące, ID rozmówcy"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Powiązanie"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Określ moją lokalizację w aplikacjach (takich jak Mapy), korzystając z sieci bezprzewodowych"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Lokalizacja określana jest za pomocą Wi-Fi i/lub sieci komórkowych"</string>
     <string name="location_gps" msgid="6296125378829097831">"Użyj satelitów GPS"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Określa lokalizację z dokładnością do ulicy (wyłącz, aby oszczędzać baterię)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Określaj lokalizację z dokładnością do ulicy"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Podaje dokładne położenie (zużywa więcej baterii, działa na zewnątrz)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Użyj wspomaganego systemu GPS"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Użyj serwera do wspomagania systemu GPS (usuń zaznaczenie, aby zmniejszyć ruch sieciowy)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Aplikacja"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Dane"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Odinstaluj"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Wyłącz"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Włącz"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Wyczyść dane"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Odinstaluj aktualizacje"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Wybrano domyślne uruchamianie tej aplikacji dla niektórych czynności."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Brak ustawień domyślnych."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Wyczyść domyślne"</string>
     <string name="unknown" msgid="1592123443519355854">"Nieznana"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Sortuj"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Sortuj według nazwy"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Sortuj według rozmiaru"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Pokaż działające usługi"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Pokaż procesy z pam. pod."</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Zarządzaj rozmiarem"</string>
     <string name="filter" msgid="2018011724373033887">"Filtr"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Wybierz opcje filtru"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Wszystkie"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Pobrane"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"Uruchomione"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"Na karcie SD"</string>
-    <string name="loading" msgid="3200408047793887917">"Ładowanie..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"Nośnik USB"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"Na karcie SD"</string>
+    <string name="disabled" msgid="9206776641295849915">"Wyłączone"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Brak aplikacji."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Pamięć wewn."</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"Nośnik USB"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"Pamięć karty SD"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Przeliczanie rozmiaru..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Usuń"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Wszystkie dane tej aplikacji zostaną trwale usunięte. Dotyczy to wszystkich plików, ustawień, kont, baz danych itd."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"wersja <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Przenieś"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Przenieś do telefonu"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Przenieś na kartę SD"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Przenieś na nośnik USB"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Przenieś na kartę SD"</string>
     <string name="moving" msgid="6431016143218876491">"Przenoszenie"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Brak wystarczającej ilości wolnego miejsca."</string>
     <string name="does_not_exist" msgid="837163572898468245">"Aplikacja nie istnieje."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"Podane położenie instalacji jest nieprawidłowe."</string>
     <string name="system_package" msgid="1030561474413022831">"Aktualizacje systemowe nie mogą być instalowane na nośniku zewnętrznym."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Wymuś zatrzymanie"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Ta aplikacja zostanie natychmiast uruchomiona ponownie. Czy na pewno chcesz wymusić zatrzymanie?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Wymuszenie zatrzymania aplikacji może spowodować jej nieprawidłowe działanie. Czy na pewno chcesz to zrobić?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Przenieś aplikację"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Przeniesienie aplikacji nie powiodło się. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Preferowana lokalizacja instalacji"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Zmień preferowaną lokalizację instalacji dla nowych aplikacji."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Użycie pamięci"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Wyświetl pamięć używaną przez aplikacje"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Uruchomione usługi"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Wyświetl i kontroluj obecnie uruchomione usługi"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Ponowne uruchamianie"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Brak uruchomionych usług"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Zatrzymać usługę?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"Usługa nie będzie działać, dopóki nie zostanie ponownie uruchomiona. Może to mieć niepożądany wpływ na aplikację <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Zatrzymaj"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Anuluj"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Uruchomiona przez aplikację: dotknij, aby zatrzymać"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: dotknij, aby zarządzać"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Dostępne: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> w <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Inne: <xliff:g id="MEMORY">%2$s</xliff:g> w <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Proces: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Proces w tle z pamięci podręcznej"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Brak uruchomionych usług."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Uruchomiona przez aplikację."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"Wolne: <xliff:g id="MEMORY">%1$s</xliff:g>"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"Używane: <xliff:g id="MEMORY">%1$s</xliff:g>"</string>
+    <string name="memory" msgid="6609961111091483458">"Pamięć RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"Procesów: <xliff:g id="NUMPROCESS">%1$d</xliff:g>, usług: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"Procesów: <xliff:g id="NUMPROCESS">%1$d</xliff:g>, usług: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"Procesów: <xliff:g id="NUMPROCESS">%1$d</xliff:g>, usług: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"Procesów: <xliff:g id="NUMPROCESS">%1$d</xliff:g>, usług: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Działająca aplikacja"</string>
+    <string name="no_services" msgid="7133900764462288263">"Nieaktywne"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Usługi"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Procesy"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Zatrzymaj"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Ustawienia"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Ta usługa została uruchomiona przez jej aplikację. Jej zatrzymanie może spowodować zakończenie działania aplikacji niepowodzeniem."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Nie można bezpiecznie zatrzymać tej aplikacji. Może to spowodować utratę części Twojej bieżącej pracy."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"To jest stary proces aplikacji zachowany dla zapewnienia lepszej szybkości w przypadku, gdyby był jeszcze potrzebny. Zwykle nie ma powodu, aby go zatrzymywać."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: aktualnie w użyciu. Dotknij opcji Ustawienia, aby nią sterować."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Główny proces będący w użyciu."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Usługa <xliff:g id="COMP_NAME">%1$s</xliff:g> jest w użyciu."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Dostawca <xliff:g id="COMP_NAME">%1$s</xliff:g> jest w użyciu."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Czy zatrzymać usługę systemową?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Czy na pewno chcesz zatrzymać tę usługę systemową? Jeśli tak, niektóre funkcje telefonu mogą przestać poprawnie działać do chwili jego wyłączenia i ponownego włączenia."</string>
     <string name="language_settings" msgid="502219872342167227">"Język i klawiatura"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Ustawienia języka i klawiatury"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Określ ustawienia regionalne (język i region) oraz opcje wprowadzania tekstu i autokorekty"</string>
-    <string name="language_category" msgid="3391756582724541530">"Ustawienia regionalne"</string>
-    <string name="text_category" msgid="6342540511465136739">"Ustawienia tekstu"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Ustawienia języka"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Ustawienia klawiatury"</string>
     <string name="phone_language" msgid="1165758957501090679">"Wybierz język"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Autokorekta"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Testowanie"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Informacje o telefonie"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Informacje o baterii"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Historia baterii"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Szybkie uruchamianie"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Ustaw skróty klawiaturowe, aby uruchamiać aplikacje"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Przypisz aplikację"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Zarządzaj opcjami wprowadzania tekstu"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Ustawienia <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Ustawienia klawiatury ekranowej"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Klawiatura urządzenia"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Ustawienia klawiatury wbudowanej"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Klawiatura wbudowana"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Ustawienia wbudowanej klawiatury fizycznej"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Dla programistów"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Ustaw opcje związane z programowaniem aplikacji"</string>
     <string name="enable_adb" msgid="7982306934419797485">"Debugowanie USB"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"Debugowanie USB jest przeznaczone wyłącznie do celów programistycznych. Może posłużyć do kopiowania danych między komputerem a urządzeniem, instalowania aplikacji w urządzeniu bez powiadamiania, a także odczytywania danych dziennika."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Wybierz gadżet"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Wybierz widżet"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Szczegóły dotyczące identyfikatora UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"Identyfikator UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Szczegóły wykorzystania sieci dla <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Odebranych bajtów: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Wysłanych bajtów: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Łącznie bajtów: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"Szczegóły wykorzystania procesora dla <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Czas użytkownika:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Czas systemu:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Łączny czas:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Uruchomień: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g> dni, <xliff:g id="HOURS">%2$d</xliff:g> godz., <xliff:g id="MINUTES">%3$d</xliff:g> min, <xliff:g id="SECONDS">%4$d</xliff:g> s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g> godz., <xliff:g id="MINUTES">%2$d</xliff:g> min, <xliff:g id="SECONDS">%3$d</xliff:g> s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g> min, <xliff:g id="SECONDS">%2$d</xliff:g> s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g> s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Pakiety współdzielące ten identyfikator UID:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Brak danych o użyciu baterii"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Czujnik:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Częściowa blokada wybudzenia:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Czujnik używany przez pakiety:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Używane <xliff:g id="COUNT">%1$d</xliff:g> raz(y) przez <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Używane <xliff:g id="COUNT">%1$d</xliff:g> raz(y) przez:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Działa"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Ekran włączony"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Telefon włączony"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Czas bez uśpienia:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Czas pracy z włączonym ekranem:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Czas pracy przy włączonym telefonie:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"Praca na baterii:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Podłączone:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Statystyki użycia"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Statystyki użycia"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Sortuj wg:"</string>
@@ -865,12 +908,19 @@
     <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>
     <string name="battery_since_reset" msgid="7464546661121187045">"Użycie baterii od zresetowania"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> pracy na baterii"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> od odłączenia"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Ładowanie"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Ekran włączony"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS włączony"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Aktywność"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Sygnał telefonu"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Czas aktywności urządzenia"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"WiFi na czas"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi na czas"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Wi-Fi na czas"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Wi-Fi na czas"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> – <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Szczegóły użycia baterii"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Szczegóły użycia"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Telefon nieaktywny"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"Łącznie dla procesora"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"Procesor w działaniach pierwszoplanowych"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Utrzymuj aktywność"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Działanie Wi-Fi"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Telefon"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Dane wysłane"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Dane odebrane"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Informacje o aplikacji"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Ustawienia aplikacji"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Ustawienia wyświetlacza"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Ustawienia WiFi"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Ustawienia Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Ustawienia Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Użycie baterii przez połączenia głosowe"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Użycie baterii przy nieaktywnym telefonie"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Użycie baterii przez bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Wyłącz moduł Bluetooth, gdy nie jest używany"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Spróbuj połączyć się z innym urządzeniem bluetooth"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Użycie baterii przez działające aplikacje"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Użycie baterii przez aplikację"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Zatrzymaj lub odinstaluj aplikację"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Wyłącz odbiornik GPS, gdy nie jest używany"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Włączaj i wyłączaj GPS ręcznie, aby kontrolować jego użycie w aplikacjach"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"Aplikacja może oferować ustawienia pozwalające zredukować użycie baterii"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> od odłączenia"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Ostatnio odłączony na <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Nie zainstalowano"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Kobieta"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Mężczyzna"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Zainstalowano mechanizm syntezy mowy"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Najpierw włącz nowy mechanizm"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Zezwalaj aplikacjom na dostęp do bezpiecznych certyfikatów i innych danych logowania"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Wprowadź hasło"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Wprowadź hasło magazynu danych logowania."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Zainstaluj z karty SD"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Zainstaluj zaszyfrowane certyfikaty z karty SD"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Zainstaluj z nośnika USB"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Zainstaluj z karty SD"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Instaluj szyf. cer. z USB"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Zainstaluj zaszyfrowane certyfikaty z karty SD"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Ustaw hasło"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Ustaw lub zmień hasło magazynu danych logowania"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Wyczyść magazyn"</string>
@@ -1068,6 +1124,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"System szyfrowania plików"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Zaszyfruj prywatne dane użytkownika"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Włącz magazyn zaszyfrowanego systemu plików na potrzeby prywatnych danych użytkownika na tym urządzeniu"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Włączenie systemów szyfrowania plików wymaga wymazania danych urządzenia."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Wyłączenie systemów szyfrowania plików wymaga wymazania danych urządzenia."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Włącz"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Wyłącz"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Anuluj"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Zmiana trybu systemów szyfrowania plików została anulowana."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Ostrzeżenie dotyczące systemów szyfrowania plików"</string>
     <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>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Tworzenie i przywracanie kopii zapasowej"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Dane osobiste"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Utwórz kopię zapasową moich danych"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Utwórz kopię zapasową ustawień i innych danych aplikacji."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Utwórz na serwerach Google kopię zapasową danych aplikacji, haseł Wi-Fi oraz innych ustawień"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Autoprzywracanie"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"W przypadku ponownej instalacji aplikacji przywróć kopię zapasową ustawień lub innych danych."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"W przypadku ponownej instalacji aplikacji przywróć kopię zapasową ustawień lub innych danych"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Kopia zapasowa"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Czy na pewno chcesz zakończyć tworzenie kopii zapasowych ustawień i danych aplikacji oraz usunąć wszystkie kopie z serwerów Google?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Czy na pewno chcesz zakończyć tworzenie kopii zapasowych haseł Wi-Fi, zakładek oraz innych ustawień i danych aplikacji, a także usunąć wszystkie kopie z serwerów Google?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Ustawienia administracji"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Administrator urządzenia"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Dezaktywuj"</string>
diff --git a/res/values-pt-rPT/arrays.xml b/res/values-pt-rPT/arrays.xml
index e4436ec..b553fb3 100644
--- a/res/values-pt-rPT/arrays.xml
+++ b/res/values-pt-rPT/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Nunca quando ligado"</item>
     <item msgid="1986753720941888596">"Nunca"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"Utilização da CPU"</item>
-    <item msgid="6401018715947316517">"Utilização da rede"</item>
-    <item msgid="188092590354892392">"Utilização do GPS"</item>
-    <item msgid="8414109131222049141">"Utilização do sensor"</item>
-    <item msgid="1327904325081257093">"Utilização para reactivação parcial"</item>
-    <item msgid="4832254146664706277">"Outra utilização"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Desde a última vez que foi desligado"</item>
-    <item msgid="166936313535197598">"Total desde o arranque"</item>
-    <item msgid="4793941382744963893">"Total em todo o tempo"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Tempo de utilização"</item>
     <item msgid="1908750532762193304">"Total de inícios"</item>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 56b0b97..a819c11 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Desmontar cartão SD"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Formatar cartão SD"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Desmontar armaz. USB"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Desmontar cartão SD"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Apagar armazenamento USB"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Apagar cartão SD"</string>
     <string name="small_font" msgid="2295331917424072635">"Pequeno"</string>
     <string name="medium_font" msgid="2068475425515133701">"Médio"</string>
     <string name="large_font" msgid="599055175160971446">"Grande"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"Cartão SD"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Armazenamento USB"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Cartão SD"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Estado da bateria:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Ficha de alimentação:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Escala da bateria:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"As alterações terão efeito ao ligar novamente o cabo USB"</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Activar armazenamento em massa USB"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Total de bytes:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Nenhum cartão SD"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"Armazenamento USB não montado"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Nenhum cartão SD"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Bytes disponíveis:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"O cartão SD está a ser utilizado como um dispositivo de armazenamento em massa"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"Agora é seguro retirar o cartão SD"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"O cartão SD foi removido quando ainda estava em uso!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"Armaz. USB utilizado como disp. de armaz. em massa"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"O cartão SD está a ser utilizado como um dispositivo de armazenamento em massa"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"Agora é seguro remover o arm. USB"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"Agora é seguro retirar o cartão SD"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"Armaz. USB removido ao ser utilizado!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"O cartão SD foi removido quando ainda estava em uso!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Bytes utilizados:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"A procurar ficheiros multimédia no cartão SD..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"Cartão SD montado como só de leitura"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"A proc. multim. no armaz. USB…"</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"A procurar ficheiros multimédia no cartão SD..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"Armaz. USB montado só leitura"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"Cartão SD montado como só de leitura"</string>
     <string name="next_label" msgid="4693520878012668114">"Seguinte"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Região"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Seleccione o seu idioma"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Seleccionar actividade"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Informações sobre o dispositivo"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Informações da bateria"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Histórico da bateria"</string>
     <string name="display_label" msgid="7403874003169865762">"Visor"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Informações do telefone"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"Cartão SD"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"Armazenamento USB"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"Cartão SD"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Definições de proxy"</string>
     <string name="cancel" msgid="6859253417269739139">"Cancelar"</string>
     <string name="settings_label" msgid="1626402585530130914">"Definições"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Definições"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Definições"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Modo de voo"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Desactivar todas as ligações sem fios"</string>
@@ -323,6 +333,11 @@
     <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>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Utilizar Near Field Communication para ler e trocar etiquetas"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Activar Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Definições de Wi-Fi"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Especificar quando mudar de Wi-Fi para dados móveis"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Ocorreu um problema ao definir a política de suspensão."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"Endereço MAC"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"Endereço IP"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"Definições de IP"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Guardar"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Cancelar"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Estado"</string>
     <string name="device_status" msgid="607405385799807324">"Estado"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Número de telefone, sinal, etc."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"Armazenamento do telefone e cartão SD"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Definições de armazenamento do telefone e cartão SD"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Desmontar cartão SD, ver armazenamento disponível"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Armazenamento"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Definições de armazenamento"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Desmontar armazenamento USB, ver armazenamento disponível"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Desmontar cartão SD, ver armazenamento disponível"</string>
     <string name="status_number" msgid="5123197324870153205">"O meu número de telefone"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MINUTOS"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"Versão do PRL"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Indisponível"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Tempo de actividade"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Hora de actividade"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Armazenamento interno do telefone"</string>
-    <string name="sd_memory" msgid="151871913888051515">"Cartão SD"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Armazenamento interno"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"Armazenamento USB"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"Cartão SD"</string>
     <string name="memory_available" msgid="418542433817289474">"Espaço disponível"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Inserir cartão SD para instalação"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Instalar cartão SD"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Instalar cartão SD"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"Desmontar cartão SD"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Desmontar armaz. USB interno"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Desmonte o cartão SD para removê-lo com segurança"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Inser. armaz. USB para montagem"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Inserir cartão SD para instalação"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Montar armaz. partilhado"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Instalar cartão SD"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Montar o armaz. USB interno"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Instalar cartão SD"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Apagar armazenamento USB"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Apagar cartão SD"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Apaga todos os dados no armaz. USB interno do telemóvel, como músicas ou fotografias"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Apaga todos os dados do cartão SD do telemóvel, tais como músicas e fotografias"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Indisponível"</string>
     <string name="read_only" msgid="6702420168629076340">" (Só de leitura)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Desmontar cartão SD"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Se desmontar o cartão SD, algumas aplicações que estiver a utilizar serão paradas e poderão ficar indisponíveis até voltar a montar o cartão SD."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Falha ao desmontar o cartão SD"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"Não é possível desmontar o cartão SD. Tente novamente mais tarde."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"O cartão SD será desmontado. Verifique o estado na área de notificação."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Desmontar armaz. USB"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Desmontar cartão SD"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Se desmontar o armazenamento USB, algumas aplicações que estiver a utilizar serão paradas e poderão ficar indisponíveis até voltar a montar o armazenamento USB."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Se desmontar o cartão SD, algumas aplicações que estiver a utilizar serão paradas e poderão ficar indisponíveis até voltar a montar o cartão SD."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Falha ao desmontar armaz. USB"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Falha ao desmontar o cartão SD"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"Não é possível desmontar o armazenamento USB. Tente novamente mais tarde."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"Não é possível desmontar o cartão SD. Tente novamente mais tarde."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"O armazenamento USB será desmontado."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"O cartão SD será desmontado."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"A desmontar"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Desmontagem em curso"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Estado da bateria"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Reposição de predefinições de APN concluída"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Reposição dos dados de fábrica"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Apaga todos os dados do telefone"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Esta operação eliminará todos os dados do telefone, incluindo:"\n<li>"A sua Conta Google"</li>\n<li>"Definições e dados do sistema e das aplicações"</li>\n<li>"Aplicações transferidas"</li>\n"Não eliminará:"\n<li>"Software do sistema actual e aplicações agregadas"</li>\n<li>"Ficheiros do cartão SD, tais como música ou fotografias"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Esta operação apagará todos os dados do "<b>"armazenamento interno"</b>" do telemóvel, incluindo:"\n\n<li>"A sua conta Google"</li>\n<li>"Definições e dados do sistema e das aplicações"</li>\n<li>"Aplicações transferidas"</li>\n\n"Para apagar todos os dados deste telemóvel, é necessário apagar o "<b>"armazenamento USB"</b>"."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Esta operação apagará todos os dados do "<b>"armazenamento interno"</b>" do telemóvel, incluindo:"\n\n<li>"A sua conta Google"</li>\n<li>"Definições e dados do sistema e das aplicações"</li>\n<li>"Aplicações transferidas"</li>\n\n"Para apagar também músicas, imagens e outros dados do utilizador, é necessário apagar o "<b>"cartão SD"</b>"."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Apagar armazenamento USB"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Apagar cartão SD"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Apaga todos os dados no armaz. USB interno do telemóvel, tais como músicas ou fotografias."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Apaga todos os dados do cartão SD do telemóvel, como músicas e fotografias."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Repor telefone"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Apagar todas as informações pessoais e as aplicações transferidas? Não é possível reverter esta acção!"</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Apagar tudo"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Desenhe o seu padrão de desbloqueio"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Tem de desenhar o seu padrão de desbloqueio para confirmar uma reposição do telefone."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Não  foi efectuada nenhuma reposição porque o serviço System Clear não está disponível."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Formatar cartão SD."</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Apaga todos os dados do cartão SD"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Esta acção irá apagar o cartão SD no telefone. Perder-se-ão TODOS os dados do cartão!"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Formatar cartão SD"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Formatar cartão SD, apagando todos os seus dados multimédia? Não é possível reverter a acção!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Apagar armazenamento USB"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Apagar cartão SD"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Apaga todos dados armaz. USB"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Apaga todos os dados do cartão SD"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Esta acção apagará o armazenamento USB. Perderá "<b>"todos"</b>" os dados aí armazenados!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Esta acção irá apagar o cartão SD. Perderá "<b>"todos"</b>" os dados do cartão!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Apagar armazenamento USB"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Apagar cartão SD"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"Apagar armazenamento USB e apagar todos os ficheiros armazenados? Não é possível reverter a acção!"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"Apagar cartão SD e apagar todos os ficheiros armazenados? Não é possível reverter a acção!"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Apagar tudo"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Desenhe o seu padrão de desbloqueio"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Tem de efectuar o padrão de desbloqueio para confirmar a formatação de um cartão SD."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Tem de desenhar a sequência de desbloqueio para confirmar que pretende formatar o armazenamento USB."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Tem de desenhar a sequência de desbloqueio para confirmar que pretende apagar o cartão SD."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Definições de chamadas"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Configurar correio de voz, reencaminhamento de chamadas, chamada em espera, ID do autor da chamada"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Ligação ponto a ponto"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Ver localização em aplicações (como o Google Maps) utilizando redes sem fios"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Localização determinada por redes Wi-Fi e/ou móveis"</string>
     <string name="location_gps" msgid="6296125378829097831">"Utilizar satélites GPS"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Ao localizar determinar localização exacta ao nível da rua (desmarque p/ poupar bateria)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Ao localizar, precisão a nível de rua"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Localizar ao nível da rua (exige mais bateria e vista do céu)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Utilizar GPS assistido"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Utilizar o servidor para auxiliar o GPS (desmarque esta opção para reduzir a utilização da rede)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Aplicação"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Dados"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Desinstalar"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Desactivar"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Activar"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Limpar dados"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Desinstalar actualizações"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Optou por iniciar esta aplicação por predefinição para algumas acções."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Nenhuma predefinição estabelecida."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Limpar predefinições"</string>
     <string name="unknown" msgid="1592123443519355854">"Desconhecido"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Ordenar"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Ordenar pelo nome"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Ordenar por tamanho"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Mostrar serv. em execução"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Mostrar proc. em cache"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Gerir espaço"</string>
     <string name="filter" msgid="2018011724373033887">"Filtrar"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Seleccionar opções de filtro"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Todas"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Transferidas"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"Em execução"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"No cartão SD"</string>
-    <string name="loading" msgid="3200408047793887917">"A carregar..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"Armazenamento USB"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"No cartão SD"</string>
+    <string name="disabled" msgid="9206776641295849915">"Desactivada"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Sem aplicações."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Armaz. interno"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"Armaz. USB"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"Arm. cartão SD"</string>
     <string name="recompute_size" msgid="7722567982831691718">"A recalcular tamanho..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Eliminar"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Todos os dados desta aplicação serão eliminados definitivamente. Isto inclui todos os ficheiros, definições, contas, bases de dados, entre outros."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"versão <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Mover"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Mover para o telefone"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Mover para cartão SD"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Mover para armaz. USB"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Mover para cartão SD"</string>
     <string name="moving" msgid="6431016143218876491">"A mover"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Não existe armazenamento suficiente restante."</string>
     <string name="does_not_exist" msgid="837163572898468245">"A aplicação não existe."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"A localização de instalação especificada não é válida."</string>
     <string name="system_package" msgid="1030561474413022831">"Não é possível instalar actualizações do sistema em suportes de dados externos."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Forçar paragem"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Esta aplicação será reiniciada imediatamente. Tem a certeza de que pretende forçar a paragem?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"A paragem forçada de uma aplicação pode levá-la a um mau funcionamento. Tem a certeza?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Mover aplicação"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Falha ao mover a aplicação. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Localização de instalação preferida"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Alterar a localização de instalação preferida para novas aplicações."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Utilização do armazenam."</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Ver o armazenamento utilizado pelas aplicações"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Serviços em execução"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Ver e controlar os serviços actualmente em execução"</string>
     <string name="service_restarting" msgid="2242747937372354306">"A reiniciar"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Não existem serviços em execução"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Parar serviço?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"O serviço deixará de ser executado até que seja novamente iniciado. Isto pode ter consequências indesejáveis para a aplicação <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Parar"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Cancelar"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Iniciado pela aplicação: tocar p/ parar"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: toque para gerir"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Disp.: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> em <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Outro: <xliff:g id="MEMORY">%2$s</xliff:g> em <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Processo: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Processo em segundo plano em cache"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Nada a ser executado."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Iniciado pela aplicação."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> gratuito"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> utiliz."</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processo e <xliff:g id="NUMSERVICES">%2$d</xliff:g> serviço"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processo e <xliff:g id="NUMSERVICES">%2$d</xliff:g> serviços"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processos e <xliff:g id="NUMSERVICES">%2$d</xliff:g> serviço"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processos e <xliff:g id="NUMSERVICES">%2$d</xliff:g> serviços"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Aplicação em execução"</string>
+    <string name="no_services" msgid="7133900764462288263">"Não activo"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Serviços"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Processos"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Parar"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Definições"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Este serviço foi iniciado pela aplicação. Se o parar, a aplicação pode falhar."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Esta aplicação não pode ser parada com segurança. Se o fizer, poderá perder algum do seu trabalho actual."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Trata-se de um processo de aplicações antigo que se tem mantido para aumentar a velocidade caso seja necessário. Normalmente, não existe motivo para pará-lo."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: actualmente em utilização. Toque em Definições para o controlar."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Processo principal que está a ser utilizado."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"O serviço <xliff:g id="COMP_NAME">%1$s</xliff:g> está a ser utilizado."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"O fornecedor <xliff:g id="COMP_NAME">%1$s</xliff:g> está a ser utilizado."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Parar serviço de sistema?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Tem a certeza de que pretende parar este serviço do sistema? Se o fizer, algumas das funcionalidades do telemóvel poderão deixar de funcionar correctamente até desligá-lo e ligá-lo novamente."</string>
     <string name="language_settings" msgid="502219872342167227">"Idioma e teclado"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Definições de idioma e teclado"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Definir opções de região (idioma e região), entrada de texto e correcção automática"</string>
-    <string name="language_category" msgid="3391756582724541530">"Definição de região"</string>
-    <string name="text_category" msgid="6342540511465136739">"Definições de texto"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Definições de idioma"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Definições do teclado"</string>
     <string name="phone_language" msgid="1165758957501090679">"Seleccionar idioma"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Substituir automaticamente"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Testes"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Informações do telefone"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Informação da bateria"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Histórico da bateria"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Iniciação rápida"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Definir atalhos do teclado para iniciar aplicações"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Atribuir aplicação"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Gerir opções de entrada de texto"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Definições de <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Definições do teclado no ecrã"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Teclado do dispositivo"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Definições do teclado incorporado"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Teclado incorporado"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Definições do teclado físico incorporado"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Desenvolvimento"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Definir opções de desenvolvimento da aplicação"</string>
     <string name="enable_adb" msgid="7982306934419797485">"Depuração USB"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"A depuração USB é utilizada apenas para fins de programação. Pode ser utilizada para copiar dados entre o computador e o dispositivo, instalar aplicações no dispositivo sem notificação e ler dados do registo."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Escolher miniaplicação"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Escolher widget"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Detalhes de UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Detalhes de utilização de rede para <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Bytes recebidos: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Bytes enviados: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Total de bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"Detalhes de utilização da CPU para <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Tempo do utilizador:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Hora do sistema:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Tempo total:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Inícios: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g>d <xliff:g id="HOURS">%2$d</xliff:g>h <xliff:g id="MINUTES">%3$d</xliff:g>m <xliff:g id="SECONDS">%4$d</xliff:g>s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g>h <xliff:g id="MINUTES">%2$d</xliff:g>m <xliff:g id="SECONDS">%3$d</xliff:g>s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g>m <xliff:g id="SECONDS">%2$d</xliff:g>s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g>s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Pacotes que partilham este UID:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Não existem dados de utilização da bateria disponíveis"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Sensor:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Activação permanente parcial:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Sensor utilizado por pacotes:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Utilizado <xliff:g id="COUNT">%1$d</xliff:g> vezes por <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Utilizado <xliff:g id="COUNT">%1$d</xliff:g> vezes por um dos seguintes:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Em execução"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Ecrã activo"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Telefone ligado"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Tempo decorrido sem suspensão:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Tempo decorrido com o ecrã ligado:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Tempo decorrido com o telefone ligado:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"Bateria activa:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Ligado:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Estatísticas de utilização"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Estatísticas de utilização"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Ordenar por:"</string>
@@ -865,12 +908,19 @@
     <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>
     <string name="battery_since_reset" msgid="7464546661121187045">"Bateria utilizada desde a reposição"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> de bateria"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> desde que foi desligado"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"A carregar"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Ecrã activo"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS activado"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Despertar"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Sinal telefónico"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Hora de activação do dispositivo"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"tempo de ligação WiFi"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"tempo de ligação WiFi"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Tempo de ligação Wi-Fi"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Tempo de ligação Wi-Fi"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> -  <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Detalhes da utilização da bateria"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Utilizar detalhes"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Telefone inactivo"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"Total da CPU"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"primeiro plano da CPU"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Manter desperto"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Wi-Fi em execução"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Telefone"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Dados enviados"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Dados recebidos"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Informações da aplicação"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Definições da aplicação"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Definições do visor"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Definições WiFi"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Definições de Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Definições de Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Bateria utilizada por chamadas de voz"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Bateria utilizada quando o telefone está inactivo"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Bateria utilizada pelo bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Desligar o bluetooth quando não estiver a ser utilizado"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Tente ligar a um dispositivo bluetooth diferente"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Bateria utilizada pelas aplicações quando em execução"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Bateria utilizada pela aplicação"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Parar ou desinstalar a aplicação"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Desactivar o GPS quando não está a ser utilizado"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Controlar manualmente o GPS para impedir que a aplicação o utilize"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"A aplicação pode sugerir definições para reduzir a utilização da bateria"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> desde que foi desligado"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Desde a última vez que foi desligado por <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Não instalada"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Feminino"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Masculino"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Motor de sintet. fala instalado"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Act. novo motor antes utilizar"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Acesso das aplicações a certificados seguros e outras credenciais"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Introduzir palavra-passe"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Introduza a palavra-passe do armazenamento de credenciais."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Instalar a partir do cartão SD"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Instalar certificados encriptados a partir do cartão SD"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Instalar do armaz. USB"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Instalar a partir do cartão SD"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Instalar certif. de encriptação a partir do armaz. USB"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Instalar certificados encriptados a partir do cartão SD"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Definir palavra-passe"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Definir ou alterar a palavra-passe do armazenamento de credenciais"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Limpar armazenamento"</string>
@@ -1068,6 +1124,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Sistema de ficheiros encriptados"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Encriptar dados de utilizador privados"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Activar armazenamento do sistema de ficheiros encriptados para dados de utilizador privados neste dispositivo"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"A activação dos Sistemas de ficheiros encriptados requer uma limpeza de dados do dispositivo."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"A desactivação dos Sistemas de ficheiros encriptados requer uma limpeza de dados do dispositivo."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Activar"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Desactivar"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Cancelar"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"A alteração do modo Sistemas de ficheiros encriptados foi cancelada."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Aviso dos Sistemas de ficheiros encriptados."</string>
     <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>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Cópia de segurança e restauro"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Dados pessoais"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Fazer uma cópia de segurança dos meus dados"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Fazer uma cópia de segurança das definições e de outros dados da aplicação."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Fazer cópia de segurança dos dados da aplicação, palavras-passe de Wi-Fi e outras definições relativas aos servidores da Google"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Restauro automático"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Se eu reinstalar uma aplicação, restaurar as definições guardadas numa cópia de segurança ou outros dados."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Se eu reinstalar uma aplicação, restaurar as definições guardadas numa cópia de segurança ou outros dados"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Cópia de segurança"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Tem a certeza de que pretende parar a cópia de segurança das definições e dos dados da aplicação e apagar todas as cópias nos servidores da Google?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Tem a certeza de que pretende parar a cópia de segurança das palavras-passe, marcadores e outros dados de definições e de aplicações de Wi-Fi e apagar todas as cópias nos servidores da Google?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Definições de administração do dispositivo"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Administrador do dispositivo"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Desactivar"</string>
diff --git a/res/values-pt/arrays.xml b/res/values-pt/arrays.xml
index 103d73a..06197d2 100644
--- a/res/values-pt/arrays.xml
+++ b/res/values-pt/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Nunca quando conectado"</item>
     <item msgid="1986753720941888596">"Nunca"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"Uso da CPU"</item>
-    <item msgid="6401018715947316517">"Uso da rede"</item>
-    <item msgid="188092590354892392">"Uso do GPS"</item>
-    <item msgid="8414109131222049141">"Uso do sensor"</item>
-    <item msgid="1327904325081257093">"Uso de ativação parcial"</item>
-    <item msgid="4832254146664706277">"Outro uso"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Desde que foi desconectado pela última vez"</item>
-    <item msgid="166936313535197598">"Total desde a inicialização"</item>
-    <item msgid="4793941382744963893">"Total geral"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Tempo de uso"</item>
     <item msgid="1908750532762193304">"Iniciar contagem"</item>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index e1c0563..4d9695d 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Desmontar cartão SD"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Formatar cartão SD"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Desconectar armaz. USB"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Desmontar cartão SD"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Apagar armazenamento USB"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Apagar cartão SD"</string>
     <string name="small_font" msgid="2295331917424072635">"Pequeno"</string>
     <string name="medium_font" msgid="2068475425515133701">"Médio"</string>
     <string name="large_font" msgid="599055175160971446">"Grande"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"Cartão SD"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Armaz. USB"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Cartão SD"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Status da bateria:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Tomada de alimentação:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Escala da bateria:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"As alterações são aplicadas quando o cabo USB é reconectado."</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Ativar o armazenamento USB em massa"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Total de bytes:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Nenhum cartão SD"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"Armazenam. USB não conectado"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Nenhum cartão SD"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Bytes disponíveis:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"O cartão SD está sendo usado como um dispositivo de armazenamento em massa."</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"O cartão SD já pode ser removido com segurança."</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"O cartão SD foi removido enquanto ainda estava em uso!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"Arm. USB usado p/ arm. massa"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"O cartão SD está sendo usado como um dispositivo de armazenamento em massa."</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"Armaz. USB pode ser removido"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"O cartão SD já pode ser removido com segurança."</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"Armaz. USB removido em uso!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"O cartão SD foi removido enquanto ainda estava em uso!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Bytes usados:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Procurando mídia no cartão SD…"</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"Cartão SD montado como somente leitura"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Procurando mídia armaz. USB..."</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Procurando mídia no cartão SD…"</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"Armaz. USB é somente leitura"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"Cartão SD montado como somente leitura"</string>
     <string name="next_label" msgid="4693520878012668114">"Avançar"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Local"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Selecionar o seu idioma"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Selecionar atividade"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Informações do dispositivo"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Informações da bateria"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Histórico da bateria"</string>
     <string name="display_label" msgid="7403874003169865762">"Tela"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Informações do telefone"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"Cartão SD"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"Armaz. USB"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"Cartão SD"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Configurações de proxy"</string>
     <string name="cancel" msgid="6859253417269739139">"Cancelar"</string>
     <string name="settings_label" msgid="1626402585530130914">"Configurações"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Configurações"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Configurações"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Modo para avião"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Desativar todas as conexões sem fio"</string>
@@ -323,6 +333,11 @@
     <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>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Usar comunicação a curta distância para ler e trocar tags"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Ativar Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Configurações de Wi-Fi"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Especificar quando alternar de Wi-Fi para dados móveis"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Houve um problema ao configurar a política de inatividade"</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"Endereço MAC"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"Endereço IP"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"Configurações de IP"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Salvar"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Cancelar"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
     <string name="device_status" msgid="607405385799807324">"Status"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Número de telefone, sinal etc."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"SD e armazenamento"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Configurações de SD e armazenamento"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Desmontar o cartão SD, visualizar armazenamento disponível"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Armazenamento"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Configurações de armazenamento"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Desconectar armazenamento USB, ver armazenamento disponível"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Desmontar o cartão SD, visualizar armazenamento disponível"</string>
     <string name="status_number" msgid="5123197324870153205">"Meu número de telefone"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"Versão PRL"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Não disponível"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Tempo de atividade"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Tempo de ativação"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Armazenamento interno do telefone"</string>
-    <string name="sd_memory" msgid="151871913888051515">"Cartão SD"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Armazenamento interno"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"Armaz. USB"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"Cartão SD"</string>
     <string name="memory_available" msgid="418542433817289474">"Espaço disponível"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Insira um cartão SD para conexão"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Conectar cartão SD"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Conectar o cartão SD"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"Desmontar cartão SD"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Desconectar armaz. USB interno"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Desconecte o cartão SD para poder removê-lo com segurança"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Insira armazen. USB"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Insira um cartão SD para conexão"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Conectar armaz. compart."</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Conectar cartão SD"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Conectar armaz. USB interno"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Conectar o cartão SD"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Apagar armazenamento USB"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Apagar cartão SD"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Ap. arm. USB, como mús. e fot."</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Apaga todos os dados do cartão SD do telefone, como músicas e fotos"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Não disponível"</string>
     <string name="read_only" msgid="6702420168629076340">" (Somente leitura)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Desconectar cartão SD"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Se você desconectar o cartão SD, alguns aplicativos que estão em uso serão interrompidos e podem não estar disponíveis até você conectar o cartão SD novamente."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Falha ao desconectar cartão SD"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"Não é possível desconectar o cartão SD. Tente novamente mais tarde."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"O cartão SD será desconectado. Verifique a área de notificação para saber o status."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Desconectar armaz. USB"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Desconectar cartão SD"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Se você desconectar o armazenamento USB, alguns aplicativos que estão em uso serão interrompidos e podem não estar disponíveis até você conectar o armazenamento USB novamente."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Se você desconectar o cartão SD, alguns aplicativos que estão em uso serão interrompidos e podem não estar disponíveis até você conectar o cartão SD novamente."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Falha ao descon. armaz. USB"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Falha ao desconectar cartão SD"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"Não é possível desconectar o armazenamento USB. Tente novamente mais tarde."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"Não é possível desconectar o cartão SD. Tente novamente mais tarde."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"O armazenamento USB será desconectado."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"O cartão SD será desconectado."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Desconectando"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Desconexão em andamento"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Status da bateria"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Redefinição das configurações padrão do APN concluída"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Configuração original"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Apaga todos os dados no telefone"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Todos os dados do seu telefone serão apagados, incluindo:"\n<li>"Sua conta do Google"</li>\n<li>"Configurações e dados de aplicativos e do sistema"</li>\n<li>"Aplicativos que você fez download"</li>\n"Não serão apagados:"\n<li>"Aplicativos fornecidos e o software atual do sistema"</li>\n<li>"Arquivos do cartão SD, como música ou fotos"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Isso apagará todos os dados do "<b>"armazenamento interno"</b>" do seu telefone, incluindo:"\n\n<li>"Sua conta do Google"</li>\n<li>"Dados e configurações do sistema e de aplicativos"</li>\n<li>"Aplicativos baixados"</li>\n\n"Para apagar todos os dados deste telefone, o "<b>"armazenamento USB"</b>" deve ser apagado."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Isso apagará todos os dados do "<b>"armazenamento interno"</b>" do seu telefone, incluindo:"\n\n<li>"Sua conta do Google"</li>\n<li>"Dados e configurações do sistema e de aplicativos"</li>\n<li>"Aplicativos baixados"</li>\n\n"Para apagar músicas, imagens e outros dados do usuário, o "<b>"cartão SD"</b>" deve ser apagado."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Apagar armazenamento USB"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Apagar cartão SD"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Ap. arm. USB, como mús. e fot."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Ap. cart. SD, como mús. e fot."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Redefinir telefone"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Apagar todas as informações pessoais e os aplicativos dos quais você fez download? É impossível reverter essa ação."</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Apagar tudo"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Desenhe o seu padrão de desbloqueio"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Você precisa desenhar o seu padrão de desbloqueio para confirmar uma redefinição de telefone."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Nenhuma redefinição foi realizada porque o serviço de Limpeza do sistema não está disponível."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Formatar cartão SD."</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Apaga todos os dados no cartão SD"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Esta ação apagará o cartão SD no telefone. Você perderá TODOS os dados do cartão!"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Formatar cartão SD"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Formatar cartão SD, apagando toda a sua mídia? A ação não pode ser revertida!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Apagar armazenamento USB"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Apagar cartão SD"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Apaga dados do armazen. USB"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Apaga todos os dados no cartão SD"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Esta ação apagará o armazenamento USB. Você perderá "<b>"todos"</b>" os dados armazenados!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Esta ação apagará o cartão SD. Você perderá "<b>"todos"</b>" os dados do cartão!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Apagar armazenamento USB"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Apagar cartão SD"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"Apagar o armazenamento USB, apagando todos os arquivos armazenados? A ação não pode ser revertida!"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"Apagar cartão SD, apagando todos os arquivos armazenados? A ação não pode ser revertida!"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Apagar tudo"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Desenhe o seu padrão de desbloqueio"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Você deve desenhar o seu padrão de desbloqueio para confirmar a formatação de um cartão SD."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Você deve desenhar sua sequência de desbloqueio para confirmar que deseja apagar o armazenamento USB."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Você deve desenhar sua sequência de desbloqueio para confirmar que deseja apagar o cartão SD."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Conf. de chamada"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Configurar correio voz, encaminhamento, espera etc."</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Vínculo"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Veja o local nos aplicativos (como o Google Maps) usando redes sem fio"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Local determinado pela rede Wi-Fi e/ou pelas redes móveis"</string>
     <string name="location_gps" msgid="6296125378829097831">"Usar satélites GPS"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Precisão do local chega ao nível de rua (desmarque p/ conservar bateria)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Durante a localização, usar precisão no nível de rua"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Localizar no nível da rua (exige mais bateria e visão do céu)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Usar GPS associado"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Usar servidor para auxiliar GPS (desmarque para reduzir o uso da rede)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Aplicativo"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Dados"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Desinstalar"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Desativar"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Ativar"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Limpar dados"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Desinstalar atualizações"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Você selecionou a inicialização padrão deste aplicativo para algumas ações."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Nenhum padrão definido."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Limpar padrão"</string>
     <string name="unknown" msgid="1592123443519355854">"Desconhecido"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Classificar"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Classificar por nome"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Classificar por tamanho"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Mostrar serviços em exec."</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Mostrar processo em cache"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Gerenciar espaço"</string>
     <string name="filter" msgid="2018011724373033887">"Filtro"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Selecionar as opções de filtro"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Todos"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Download concluído"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"Em execução"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"No cartão SD"</string>
-    <string name="loading" msgid="3200408047793887917">"Carregando..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"Armazenamento USB"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"No cartão SD"</string>
+    <string name="disabled" msgid="9206776641295849915">"Desativado"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Nenhum aplicativo."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Armaz. interno"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"Armaz. USB"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"Armaz. cart. SD"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Recalculando o tamanho…"</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Excluir"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Todos os dados deste aplicativo serão excluídos permanentemente. Isso inclui todos os arquivos, configurações, contas, bancos de dados e outros."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"versão <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Mover"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Mover para telefone"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Mover para cartão SD"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Mover para armaz. USB"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Mover para cartão SD"</string>
     <string name="moving" msgid="6431016143218876491">"Movendo"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Não há espaço de armazenamento suficiente disponível."</string>
     <string name="does_not_exist" msgid="837163572898468245">"O aplicativo não existe."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"O local especificado para instalação não é válido."</string>
     <string name="system_package" msgid="1030561474413022831">"As atualizações do sistema não podem ser instaladas em mídia externa."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Forçar parada"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Este aplicativo será reiniciado imediatamente. Tem certeza de que deseja forçar a parada?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Forçar a parada do aplicativo pode causar um comportamento inesperado. Continuar?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Mover aplicativo"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Falha ao mover aplicativo. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Local de instalação preferido"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Alterar o local de instalação preferido para novos aplicativos."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Uso do armazenamento"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Visualizar armazenamento usado pelos aplicativos"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Serviços em execução"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Visualizar e controlar os serviços em execução no momento"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Reiniciando"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Sem serviços em execução"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Parar o serviço?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"O serviço não será mais executado até ser iniciado novamente. Isso pode ter consequências indesejáveis no aplicativo <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Parar"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Cancelar"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Iniciado pelo aplicativo: toque p/ parar"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: toque para gerenciar"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Disp.: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> em <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Outro: <xliff:g id="MEMORY">%2$s</xliff:g> em <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Processo: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Processo em segundo plano em cache"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Nada em execução."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Iniciado pelo aplicativo."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> grat."</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> usada"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processo e <xliff:g id="NUMSERVICES">%2$d</xliff:g> serviço"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processo e <xliff:g id="NUMSERVICES">%2$d</xliff:g> serviços"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processos e <xliff:g id="NUMSERVICES">%2$d</xliff:g> serviço"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processos e <xliff:g id="NUMSERVICES">%2$d</xliff:g> serviços"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Aplicativo em execução"</string>
+    <string name="no_services" msgid="7133900764462288263">"Não ativo"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Serviços"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Processos"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Parar"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Configurações"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Este serviço foi iniciado pelo aplicativo correspondente. Interrompê-lo pode provocar a falha do aplicativo."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Este aplicativo não pode ser interrompido com segurança. Isso poderia resultar na perda do seu trabalho atual."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Este é um processo antigo do aplicativo que está sendo mantido para obter melhor velocidade caso seja necessário novamente. Geralmente não há motivos para interrompê-lo."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: em uso no momento. Toque em Configurações para controlá-lo."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"O processo principal que está em uso."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"O serviço <xliff:g id="COMP_NAME">%1$s</xliff:g> está em uso."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"O provedor <xliff:g id="COMP_NAME">%1$s</xliff:g> está em uso."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Interromper o serviço do sistema?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Tem certeza de que deseja interromper este serviço do sistema? Se o fizer, alguns recursos do seu telefone podem parar de funcionar corretamente até que você o desligue e ligue novamente."</string>
     <string name="language_settings" msgid="502219872342167227">"Idioma e teclado"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Configurações de idioma e teclado"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Definir opções de idioma e região, entrada de texto e correção automática"</string>
-    <string name="language_category" msgid="3391756582724541530">"Configuração de local"</string>
-    <string name="text_category" msgid="6342540511465136739">"Configurações de texto"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Configurações de idioma"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Configurações do teclado"</string>
     <string name="phone_language" msgid="1165758957501090679">"Selecionar idioma"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Substituição automática"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Testando"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Informações do telefone"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Informações da bateria"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Histórico da bateria"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Início rápido"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Define atalhos do teclado para iniciar aplicativos"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Atribuir aplicativo"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Gerenciar opções de entrada de texto"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Configurações de <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Configurações do teclado virtual"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Teclado do dispositivo"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Configurações de teclado integrado"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Teclado integrado"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Configurações do teclado físico integrado"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Desenvolvimento"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Define as opções para o desenvolvimento do aplicativo"</string>
     <string name="enable_adb" msgid="7982306934419797485">"Depuração USB"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"A depuração USB serve apenas para fins de desenvolvimento. Ela pode ser usada para copiar dados entre o computador e o aparelho, instalar aplicativos no seu aparelho sem notificação e ler dados de registro."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Escolher o gadget"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Escolher widget"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Detalhes do UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Detalhes do uso da rede do <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Bytes recebidos: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Bytes enviados: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Total de bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"Detalhes do uso de CPU para <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Tempo do usuário:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Tempo do sistema:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Tempo total:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Inicia: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g>d <xliff:g id="HOURS">%2$d</xliff:g>h <xliff:g id="MINUTES">%3$d</xliff:g>m <xliff:g id="SECONDS">%4$d</xliff:g>s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g>h <xliff:g id="MINUTES">%2$d</xliff:g>m <xliff:g id="SECONDS">%3$d</xliff:g>s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g>m <xliff:g id="SECONDS">%2$d</xliff:g>s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g>s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Pacotes que compartilham este UID:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Não há dados de uso da bateria disponíveis"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Sensor:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Bloqueio de ativação parcial:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Sensor usado por pacotes:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Usado <xliff:g id="COUNT">%1$d</xliff:g> vezes por <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Usado <xliff:g id="COUNT">%1$d</xliff:g> vezes por um de:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Em execução"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Tela ativada"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Telefone ativado"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Tempo gasto quando ativo:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Tempo gasto com a tela ativada:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Tempo gasto com o telefone ativado:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"Na bateria:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Conectado:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Estatísticas de uso"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Estatísticas de uso"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Classificar por:"</string>
@@ -865,12 +908,19 @@
     <string name="power_usage_summary" msgid="7237084831082848168">"O que está consumindo a bateria"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Uso da bateria desde a desconexão do aparelho"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"Uso da bateria desde a redefinição"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> da bateria"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> desde que foi desconectado"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Carregando"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Tela ativada"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS ligado"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Ativo"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Sinal do celular"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Tempo de ativação do aparelho"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"Tempo de ativação da rede WiFi"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"Tempo de ativação da rede WiFi"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Tempo de ativação da rede Wi-Fi"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Tempo de ativação da rede Wi-Fi"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> -  <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Detalhes de uso da bateria"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Detalhes de uso"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Telefone ocioso"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"Total da CPU"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPU prioritária"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Permanecer ativo"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Wi-Fi em execução"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Telefone"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Dados enviados"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Dados recebidos"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Informações do aplicativo"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Configurações de aplicativos"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Configurações da tela"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Configurações de WiFi"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Configurações de Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Conf. de Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Bateria usada por chamadas de voz"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Bateria usada quando o telefone está ocioso"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Bateria usada por Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Desativar Bluetooth quando não estiver em uso"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Tente conectar a um dispositivo Bluetooth diferente"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Bateria usada por aplicativos em execução"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Bateria usada pelo aplicativo"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Parar ou desinstalar o aplicativo"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Desativar GPS quando não estiver em uso"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Controlar o GPS manualmente para evitar sua utilização pelo aplicativo"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"O aplicativo pode oferecer configurações para reduzir o uso da bateria"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> desde que foi desconectado"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Quando foi desconectado pela última vez para <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Não instalado"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Feminino"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Masculino"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Sintetização de voz instalada"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Ativar novo mecanismo antes"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Permitir que os aplicativos acessem credenciais e certificados seguros"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Inserir senha"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Insira a senha do armazenamento de credenciais."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Instalar do cartão SD"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Instalar certificados criptografados do cartão SD"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Instalar do armaz. USB"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Instalar do cartão SD"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Inst. cert. crip. do arm."</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Instalar certificados criptografados do cartão SD"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Definir senha"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Definir ou alterar a senha do armazenamento de credenciais"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Limpar armazenamento"</string>
@@ -1068,6 +1124,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Sistema de arquivos criptografados"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Criptografar dados privados de usuário"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Ativar armazenamento do sistema de arquivo criptografado para dados privados do usuário neste aparelho."</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"A ativação dos Sistemas de arquivo criptografados exige uma limpeza de dados do dispositivo."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"A desativação dos Sistemas de arquivo criptografados exige uma limpeza de dados do dispositivo."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Ativar"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Desativar"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Cancelar"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"A alteração do modo do Sistema de arquivos criptografados foi cancelada."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Aviso dos Sistemas de arquivo criptografados."</string>
     <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>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Backup e restauração"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Dados pessoais"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Fazer backup dos meus dados"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Fazer backup das minhas configurações e de outros dados do aplicativo."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Dados de aplicativos de backup, senhas da rede Wi-Fi e outras configurações nos servidores do Google"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Restauração automática"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Caso o aplicativo seja reinstalado, restaurar as configurações ou outros dados de backup."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Caso o aplicativo seja reinstalado, restaurar as configurações ou outros dados de backup"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Backup"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Tem certeza de que deseja parar de fazer backup das suas configurações e dados de aplicativo e apagar todas as cópias nos servidores do Google?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Tem certeza de que deseja parar de fazer backup das suas senhas da rede Wi-Fi, dos favoritos e de outras configurações e dados de aplicativo e apagar todas as cópias nos servidores do Google?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Configurações de administração do dispositivo"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Administrador do dispositivo"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Desativar"</string>
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
index 99eb90a..afca691 100644
--- a/res/values-ru/arrays.xml
+++ b/res/values-ru/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Никогда, если есть питание от сети"</item>
     <item msgid="1986753720941888596">"Никогда"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"Использование процессора"</item>
-    <item msgid="6401018715947316517">"Использование сети"</item>
-    <item msgid="188092590354892392">"Использование GPS"</item>
-    <item msgid="8414109131222049141">"Использование сенсора"</item>
-    <item msgid="1327904325081257093">"Использование частичного включения"</item>
-    <item msgid="4832254146664706277">"Прочее использование"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"После последнего отключения питания"</item>
-    <item msgid="166936313535197598">"Всего с момента загрузки"</item>
-    <item msgid="4793941382744963893">"Всего за все время"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Время использования"</item>
     <item msgid="1908750532762193304">"Начать подсчет"</item>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index ecd3b45..271ca55 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Извлечь SD-карту"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Очистить SD-карту"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Отключить USB-накопитель"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Извлечь SD-карту"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Очистить USB-накопитель"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Очистить SD-карту"</string>
     <string name="small_font" msgid="2295331917424072635">"Маленький"</string>
     <string name="medium_font" msgid="2068475425515133701">"Среднее"</string>
     <string name="large_font" msgid="599055175160971446">"Большой"</string>
     <string name="font_size_save" msgid="3450855718056759095">"ОК"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"SD-карта"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-накопитель"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-карта"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Состояние батареи:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Питание:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Шкала батареи:"</string>
@@ -178,29 +181,36 @@
     <string name="band_mode_failed" msgid="1495968863884716379">"Сбой"</string>
     <string name="band_mode_succeeded" msgid="2701016190055887575">"Успешно"</string>
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Изменения вступят в силу после повторного подключения USB-кабеля"</string>
-    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Включить массовую память USB"</string>
+    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Включить запоминающее устройство USB"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Всего байтов:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Нет SD-карты"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"USB-накопитель не подключен"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Нет SD-карты"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Свободно байтов:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"SD-карта используется в качестве устройства массовой памяти"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"SD-карта может быть извлечена"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"SD-карта была извлечена во время использования!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USB-накопитель работает как запоминающее устройство"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"SD-карта используется в качестве устройства массовой памяти"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"USB-накопитель можно отключить"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"SD-карта может быть извлечена"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"Накопитель извлечен во время использования!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"SD-карта была извлечена во время использования!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Использовано байтов:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Поиск мультимедиа на SD-карте..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"SD-карта установлена только для чтения"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Сканирование USB-накопителя..."</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Поиск мультимедиа на SD-карте..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"USB-накопитель защищен от записи"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"SD-карта установлена только для чтения"</string>
     <string name="next_label" msgid="4693520878012668114">"Далее"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Региональные настройки"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Выберите язык"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Выбрать действие"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Сведения об устройстве"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Информация о батарее"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Журнал сведений о батарее"</string>
-    <string name="display_label" msgid="7403874003169865762">"Показать"</string>
+    <string name="display_label" msgid="7403874003169865762">"Экран"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Информация о телефоне"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"SD-карта"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB-накопитель"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SD-карта"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Настройки прокси-сервера"</string>
     <string name="cancel" msgid="6859253417269739139">"Отмена"</string>
     <string name="settings_label" msgid="1626402585530130914">"Настройки"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Настройки"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Настройки"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Режим полета"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Отключить все беспроводные соединения"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Для громкой связи"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Для музыки и мультимедиа"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Запомнить настройки"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"Включить NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Использовать радиосвязь ближнего действия для чтения и обмена метками"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Включить Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Настройки Wi-Fi"</string>
@@ -345,7 +360,7 @@
     <string name="wifi_ssid" msgid="641393708309146745">"Имя сети (SSID)"</string>
     <string name="wifi_security" msgid="6603611185592956936">"Безопасность"</string>
     <string name="wifi_signal" msgid="5514120261628065287">"Уровень сигнала"</string>
-    <string name="wifi_status" msgid="4824568012414605414">"Статус "</string>
+    <string name="wifi_status" msgid="4824568012414605414">"Статус"</string>
     <string name="wifi_speed" msgid="3526198708812322037">"Скорость связи"</string>
     <string name="wifi_ip_address" msgid="1440054061044402918">"IP-адрес"</string>
     <string name="wifi_eap_method" msgid="8529436133640730382">"Метод EAP"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"При каких условиях переключаться с Wi-Fi на сотовую сеть"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"При установке правила перехода в спящий режим возникла неполадка."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MAC-адрес"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP-адрес"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"Настройки IP"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Сохранить"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Отмена"</string>
@@ -390,7 +406,7 @@
     <string name="wifi_tether_failed_subtext" msgid="2654888578056042315">"Ошибка подключения"</string>
     <string name="wifi_tether_settings_text" msgid="123573487844470195">"Настройки точки доступа"</string>
     <string name="wifi_tether_settings_subtext" msgid="8064755682383367008">"Настройка точки доступа Wi-Fi"</string>
-    <string name="wifi_tether_settings_title" msgid="3749063216348284432">"Настройки точки доступа "</string>
+    <string name="wifi_tether_settings_title" msgid="3749063216348284432">"Настройки точки доступа"</string>
     <string name="wifi_tether_configure_ap_text" msgid="3474995108398156258">"Настроить точку доступа Wi-Fi"</string>
     <string name="wifi_tether_configure_subtext" msgid="1927454307836232128">"Точка доступа <xliff:g id="NETWORK_SSID">%1$s</xliff:g> <xliff:g id="NETWORK_SECURITY">%2$s</xliff:g>"</string>
     <string name="wifi_tether_configure_ssid_default" msgid="8467525402622138547">"Хот-спот Android"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Общая информация"</string>
     <string name="device_status" msgid="607405385799807324">"Общая информация"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Номер телефона, уровень сигнала и т.д."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"Память"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Настройки SD-карты и памяти телефона"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Отключение SD-карты, сведения о доступной памяти"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Память"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Настройки хранилища"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Отключить USB-накопитель, просмотреть доступные накопители"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Отключение SD-карты, сведения о доступной памяти"</string>
     <string name="status_number" msgid="5123197324870153205">"Мой номер телефона"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"Версия PRL"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Недоступно"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Время с момента включения"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Время работы"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Внутренняя память телефона"</string>
-    <string name="sd_memory" msgid="151871913888051515">"SD-карта"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Внутренний накопитель"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"USB-накопитель"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"SD-карта"</string>
     <string name="memory_available" msgid="418542433817289474">"Свободно"</string>
     <string name="memory_size" msgid="6629067715017232195">"Всего места"</string>
-    <string name="sd_eject" msgid="6915293408836853020">"Извлечь SD-карту"</string>
-    <string name="sd_eject_summary" msgid="3315557796211542962">"Нажмите сюда для безопасного извлечения SD-карты из телефона"</string>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Вставьте SD-карту для подключения"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Подключить SD-карту"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Подключить SD-карту"</string>
-    <string name="sd_format" msgid="5448738337382712203">"Очистить SD-карту"</string>
-    <string name="sd_format_summary" msgid="6616491027883134004">"Удалить все данные с SD-карты"</string>
+    <string name="sd_eject" product="default" msgid="6915293408836853020">"Извлечь SD-карту"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Отключить внутр. USB-накопитель"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Отключить SD-карту для безопасного извлечения"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Вставить USB-накопитель для подключения"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Вставьте SD-карту для подключения"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Подключить накопитель"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Подключить SD-карту"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Подключить внутр. USB-накопитель"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Подключить SD-карту"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Очистить USB-накопитель"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Очистить SD-карту"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Удаляет все данные с внутреннего USB-накопителя телефона, такие как музыка и фотографии"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Удаляет все данные с SD-карты телефона, например музыку и фотографии"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Недоступно"</string>
     <string name="read_only" msgid="6702420168629076340">" (только для чтения)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Отключение SD-карты"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Если отключить SD-карту, некоторые используемые приложения перестанут работать и могут оставаться недоступными до подключения SD-карты."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Не удалось отключить SD-карту."</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"Не удается отключить SD-карту. Повторите попытку позже."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"SD-карта будет отключена. Проверьте статус в области уведомлений."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Отключить USB-накопитель"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Отключение SD-карты"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Если отключить USB-накопитель, некоторые используемые приложения перестанут работать и могут оставаться недоступными до повторного подключения этого накопителя."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Если отключить SD-карту, некоторые используемые приложения перестанут работать и могут оставаться недоступными до подключения SD-карты."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"Не удалось отключить накопитель"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Не удалось отключить SD-карту."</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"Не удается отключить USB-накопитель. Повторите попытку позже."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"Не удается отключить SD-карту. Повторите попытку позже."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"USB-накопитель будет отключен."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"SD-карта будет отключена."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Извлечение"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Выполняется извлечение"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Состояние батареи"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Восстановление настроек APN по умолчанию завершено"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Сброс настроек"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Удаляет все данные из памяти телефона"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"С телефона будут удалены все данные, в том числе: "\n<li>"ваш аккаунт Google"</li>\n<li>"данные и настройки системы и приложений"</li>\n<li>"загруженные приложения"</li>\n"Не будут удалены:"\n<li>"текущее системное ПО и пакетные приложения"</li>\n<li>"файлы на SD-карте, например фотографии и музыка"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Это приведет к удалению всех данных с "<b>"внутреннего накопителя"</b>" телефона, включая:"\n\n<li>"ваш аккаунт Google;"</li>\n<li>"данные и настройки системы и приложений;"</li>\n<li>"загруженные приложения."</li>\n\n"Чтобы удалить все данные с этого телефона, необходимо очистить "<b>"USB-накопитель"</b>"."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Это приведет к удалению всех данных с "<b>"внутреннего накопителя"</b>" телефона, включая:"\n\n<li>"ваш аккаунт Google;"</li>\n<li>"данные и настройки системы и приложений;"</li>\n<li>"загруженные приложения."</li>\n\n"Чтобы удалить музыку, изображения и другие пользовательские данные, необходимо очистить "<b>"SD-карту"</b>"."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Очистить USB-накопитель"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Очистить SD-карту"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Очищать внутренний накопитель."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Удаляет все данные на SD-карте телефона, например музыку и фотографии."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Сбросить настройки телефона"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Стереть всю личную информацию и загруженные приложения? Это действие нельзя отменить!"</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Стереть все"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Начертить графический ключ"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Для подтверждения сброса настроек телефона необходимо начертить графический ключ."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Не удалось выполнить сброс, поскольку служба System Clear недоступна."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Очистить SD-карту"</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Удаляет все данные с карты SD"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Это действие приведет к очистке карты SD в телефоне. ВСЯ информация, находящаяся на карте, будет удалена!"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Очистить SD-карту"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Форматировать карту SD с удалением всех ваших данных? Это действие нельзя отменить!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Очистить USB-накопитель"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Очистить SD-карту"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Уничтожает все данные на USB-накопителе"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Удаляет все данные с карты SD"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Это приведет к очистке USB-накопителя. Вы потеряете "<b>"все"</b>" хранящиеся на нем данные!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Это приведет к очистке SD-карты. Вы потеряете "<b>"все"</b>" данные на карте!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Очистить USB-накопитель"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Очистить SD-карту"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"Очистить USB-накопитель, безвозвратно удалив все файлы на нем?"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"Очистить SD-карту, безвозвратно удалив все файлы на ней?"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Стереть все"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Начертить графический ключ разблокировки"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Для подтверждения форматирования карты SD нужно начертить графический ключ разблокировки."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Для подтверждения очистки USB-накопителя начертите графический ключ."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Для подтверждения очистки SD-карты начертите графический ключ."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Вызовы"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Голосовая почта, АОН, переадресация, параллельный вызов"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"USB-модем"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Использовать Wi-Fi и сотовые сети для определения местоположения"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Использовать Wi-Fi и сотовые сети для определения местоположения"</string>
     <string name="location_gps" msgid="6296125378829097831">"Спутники GPS"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Использовать GPS для определения местоположения (повышенный расход энергии)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Координаты на уровне улиц"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Использовать GPS для определения местоположения (высокий расход энергии)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Использовать A-GPS"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Использовать сервер для A-GPS (снимите флажок для менее интенсивного использования сети)"</string>
@@ -672,7 +712,7 @@
     <string name="lock_example_title" msgid="8052305554017485410">"Пример графического ключа"</string>
     <string name="lock_example_message" msgid="1838650097090632706">"Соедините как минимум четыре точки."\n" "\n"Выберите \"Далее\", когда будете готовы начертить собственный графический ключ разблокировки."</string>
     <string name="manageapplications_settings_title" msgid="5712405848153426706">"Управление приложениями"</string>
-    <string name="manageapplications_settings_summary" msgid="6097117021500651232">"Управление установленными приложениями и их удаление "</string>
+    <string name="manageapplications_settings_summary" msgid="6097117021500651232">"Управление установленными приложениями и их удаление"</string>
     <string name="applications_settings" msgid="3736173521008476946">"Приложения"</string>
     <string name="applications_settings_summary" msgid="2714215108369119717">"Управление приложениями, настройка клавиш быстрого запуска"</string>
     <string name="applications_settings_header" msgid="6018266337275422250">"Настройки приложения"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Приложение"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Данные"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Удалить"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Отключить"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Включить"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Стереть данные"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Удалить обновления"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Выбран запуск этого приложения по умолчанию при выполнении некоторых действий."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Значения по умолчанию не установлены."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Удалить настройки по умолчанию"</string>
     <string name="unknown" msgid="1592123443519355854">"Неизвестно"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Упорядочить"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Упорядочить по именам"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Упорядочить по размеру"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Показать активные службы"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Показать процессы в кэше"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Управление местом"</string>
     <string name="filter" msgid="2018011724373033887">"Фильтр"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Выбрать параметры фильтра"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Все"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Сторонние"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"Работающие"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"На SD-карте"</string>
-    <string name="loading" msgid="3200408047793887917">"Идет загрузка…"</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"USB-накопитель"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"На SD-карте"</string>
+    <string name="disabled" msgid="9206776641295849915">"Отключено"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Нет приложений."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Внутренний накопитель"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USB-накопитель"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SD-карта"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Повторное вычисление размера..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Удалить"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Все данные этой программы будут удалены навсегда, включая все файлы, базы данных, настройки, аккаунты и прочее."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"Версия <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Переместить"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Переместить на телефон"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Переместить на SD-карту"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Перенести на USB-накопитель"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Переместить на SD-карту"</string>
     <string name="moving" msgid="6431016143218876491">"Перемещение"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Недостаточно свободной памяти."</string>
     <string name="does_not_exist" msgid="837163572898468245">"Приложение не существует."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"Указано недопустимое место установки."</string>
     <string name="system_package" msgid="1030561474413022831">"Системные обновления не могут быть установлены на внешнем носителе."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Принудительная остановка"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Программа будет перезапущена. Вы действительно хотите выполнить принудительную остановку?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Принудительная остановка приложения может привести к сбою. Продолжить?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Перемещение приложения"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Не удалось переместить приложение. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Место установки"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Изменить установочную папку для новых приложений."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Использование хранилища"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Хранилище, используемое приложениями"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Работающие программы"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Просмотр и управление работающими программами"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Перезапуск"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Работающие программы отсутствуют"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Остановить службу?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"Эта служба будет отключена до повторного запуска, что может негативно повлиять на программу <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Остановить"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Отмена"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Нажмите, чтобы остановить."</string>
-    <string name="service_client_name" msgid="2337664610975074717">"Нажмите, чтобы изменить <xliff:g id="CLIENT_NAME">%1$s</xliff:g>"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Дост.: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> (<xliff:g id="COUNT">%1$d</xliff:g>)"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Другое: <xliff:g id="MEMORY">%2$s</xliff:g> (<xliff:g id="COUNT">%1$d</xliff:g>)"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Процесс <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Кэшированный фоновый процесс"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Ничего не запущено."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Запущено приложением."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> свободно"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> занято"</string>
+    <string name="memory" msgid="6609961111091483458">"ОЗУ"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"Процессов: <xliff:g id="NUMPROCESS">%1$d</xliff:g>; служб: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"Процессов: <xliff:g id="NUMPROCESS">%1$d</xliff:g>; служб: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"Процессов: <xliff:g id="NUMPROCESS">%1$d</xliff:g>; служб: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"Процессов: <xliff:g id="NUMPROCESS">%1$d</xliff:g>; служб: <xliff:g id="NUMSERVICES">%2$d</xliff:g>"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Запущенное приложение"</string>
+    <string name="no_services" msgid="7133900764462288263">"Неактивен"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Службы"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Процессы"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Остановить"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Настройки"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Эта служба была запущена ее приложением. Остановка может привести к ошибке приложения."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Данное приложение нельзя остановить безопасно. Это может привести к потере выполненной работы."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Это процесс, используемый в старых приложениях, который сохранен для повышения скорости в случае необходимости. Как правило, останавливать его не нужно."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: в настоящий момент используется. Нажмите \"Настройки\" для управления."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Основной используемый процесс."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Служба <xliff:g id="COMP_NAME">%1$s</xliff:g> используется."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Провайдер <xliff:g id="COMP_NAME">%1$s</xliff:g> используется."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Остановить системную службу?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Вы действительно хотите остановить эту системную службу? В этом случае некоторые функции телефона могут перестать работать до его выключения и повторного включения."</string>
     <string name="language_settings" msgid="502219872342167227">"Язык и клавиатура"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Настройки языка и клавиатуры"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Выбор языка и региона, способов ввода и настройка автокоррекции"</string>
-    <string name="language_category" msgid="3391756582724541530">"Региональные настройки"</string>
-    <string name="text_category" msgid="6342540511465136739">"Настройки ввода текста"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Языковые настройки"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Настройки клавиатуры"</string>
     <string name="phone_language" msgid="1165758957501090679">"Выбрать язык"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Автокоррекция"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Проверка"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Информация о телефоне"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Информация о батарее"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Журнал сведений о батарее"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Быстрый запуск"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Настройка клавиш для быстрого запуска приложений"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Назначить приложение"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Задать параметры ввода текста"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"Настройки <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Настройки экранной клавиатуры"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Клавиатура устройства"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Настройки встроенной клавиатуры"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Встроенная клавиатура"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Настройки встроенной клавиатуры"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Разработка"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Настройка параметров для разработки приложений"</string>
     <string name="enable_adb" msgid="7982306934419797485">"Отладка по USB"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"Отладка по USB предназначена для целей разработки. С ее помощью можно копировать данные с компьютера на мобильное устройство и наборот, устанавливать на устройство приложения и просматривать данные журналов."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Выбор·гаджета"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Выбор виджета"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Сведения для идентификатора пользователя <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"Идентификатор пользователя <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Сведения об использовании сети приложением <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Получено байт: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Отправлено байт: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Всего байт: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"Сведения об использовании процессора приложением <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Пользовательское время:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Системное время:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Общее время:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Запусков: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g> дн. <xliff:g id="HOURS">%2$d</xliff:g> ч. <xliff:g id="MINUTES">%3$d</xliff:g> мин. <xliff:g id="SECONDS">%4$d</xliff:g> с."</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g> ч. <xliff:g id="MINUTES">%2$d</xliff:g> мин. <xliff:g id="SECONDS">%3$d</xliff:g> с."</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g> мин. <xliff:g id="SECONDS">%2$d</xliff:g> с."</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g> с."</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Пакеты с этим идентификатором пользователя:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Данные об использовании батареи недоступны"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Сенсор:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Блокировка частичного включения:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Сенсор использован пакетами:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Использовано пакетом <xliff:g id="PACKAGE">%2$s</xliff:g>: <xliff:g id="COUNT">%1$d</xliff:g> раз(а)"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Использовано <xliff:g id="COUNT">%1$d</xliff:g> раз(а) одним из:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Выполняемые сейчас"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Экран включен"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Телефон включен"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Время с последнего перехода в спящий режим:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Время пребывания экрана включенным:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Время пребывания телефона включенным:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"От батареи:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Подключен к питанию:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Статистика использования"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Статистика использования"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Упорядочить по:"</string>
@@ -865,12 +908,19 @@
     <string name="power_usage_summary" msgid="7237084831082848168">"На что расходуется заряд батареи"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"Расход заряда батареи с момента отключения от сети питания"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"Расход заряда батареи с момента перезагрузки"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> от батареи"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> с момента отключения от питания"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Идет зарядка"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Экран включен"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS вкл."</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Режим бодрствования"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Сигнал телефона"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Время включения устройства"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"Время работы WiFi"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"Время работы WiFi"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Время работы Wi-Fi"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Время работы Wi-Fi"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> – <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Сведения о расходе заряда батареи"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Сведения об использовании"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Телефон в режиме ожидания"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"ЦП – всего"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"ЦП – активный режим"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Не отключать"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Использование Wi-Fi"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Телефон"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Отправлено данных"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Получено данных"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Сведения о приложении"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Настройки приложения"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Настройки экрана"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Настройки WiFi"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Настройки Wi-Fi"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Настройки Bluetooth"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Использование батареи для голосовых вызовов"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Расход заряда батареи в режиме ожидания"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Использование батареи модулем Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Отключить Bluetooth, если он не используется"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Попробуйте подключиться к другому устройству Bluetooth"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Использование батареи для работы приложений"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Батарея используется приложением"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Остановить или удалить приложение"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Отключать GPS, когда не используется"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Включать GPS вручную, чтобы приложения не могли использовать эту функцию"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"В программе могут быть настройки для снижения расхода заряда батареи"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> с момента отключения от питания"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"С последнего отключения <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Не установлено"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Женский"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Мужской"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Модуль синтеза речи установлен"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Включите новый модуль"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Разрешить приложениям использовать хранилище сертификатов и рег. данных"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Ввод пароля"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Введите пароль для доступа в хранилище регистрационных данных."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Установка с SD-карты"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Установить сертификаты шифрования с карты памяти"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Устанавливать с накопителя"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Установка с SD-карты"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Устанавливать зашифрованные сертификаты с USB-накопителя"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Установить сертификаты шифрования с карты памяти"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Установить пароль"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Установить или изменить пароль для доступа в хранилище рег. данных"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Очистить хранилище"</string>
@@ -1068,6 +1124,16 @@
     <string name="credentials_erased" msgid="7700309135582200849">"Хранилище регистрационных данных очищено."</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"Хранилище регистрационных данных включено."</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"Хранилище регистрационных данных отключено."</string>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Зашифрованная файловая система"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Зашифровать личные данные пользователя"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Включить хранилище в зашифрованной файловой системе для хранения личных данных пользователя на этом устройстве"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Для включения зашифрованных файловых систем требуется удаление данных с устройства."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Для отключения зашифрованных файловых систем требуется удаление данных с устройства."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Включить"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Отключить"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Отмена"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Изменение режима зашифрованной файловой системы отменено."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Предупреждение для зашифрованных файловых систем"</string>
     <string name="emergency_tone_title" msgid="1055954530111587114">"Тональный сигнал экстренного вызова"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Настроить режим работы при экстренном вызове"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"Конфиденциальность"</string>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Резервное копирование и восстановление"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Личные данные"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Резервное копирование данных"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Создать резервную копию настроек и других данных."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Резервное копирование данных приложений, паролей Wi-Fi и других настроек в Google"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Автовосстановление"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"При переустановке приложения восстановить резервные копии настроек и других данных."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"При переустановке приложения восстановить резервные копии настроек и других данных"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Резервное копирование"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Вы уверены, что не хотите больше создавать резервные копии настроек и данных программ и хотите удалить все копии с серверов Google?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Вы уверены, что хотите прекратить создавать резервные копии паролей Wi-Fi, закладок, настроек и данных приложений и удалить все копии с серверов Google?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Настройки администрирования устройства"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Администратор устройства"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Отключить"</string>
diff --git a/res/values-sv/arrays.xml b/res/values-sv/arrays.xml
index f583155..2d2949a 100644
--- a/res/values-sv/arrays.xml
+++ b/res/values-sv/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Aldrig när den är inkopplad"</item>
     <item msgid="1986753720941888596">"Aldrig"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"CPU-användning"</item>
-    <item msgid="6401018715947316517">"Nätverksanvändning"</item>
-    <item msgid="188092590354892392">"GPS-användning"</item>
-    <item msgid="8414109131222049141">"Sensoranvändning"</item>
-    <item msgid="1327904325081257093">"Användning av delaktivering"</item>
-    <item msgid="4832254146664706277">"Övrig användning"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Sedan senaste bortkoppling"</item>
-    <item msgid="166936313535197598">"Totalt sedan start"</item>
-    <item msgid="4793941382744963893">"Totalt"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Användningstid"</item>
     <item msgid="1908750532762193304">"Starta räkneverk"</item>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index c9eb25e..b8546e8 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"Montera bort SD-kort"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"Formatera SD-kort"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"Demontera USB-enhet"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"Montera bort SD-kort"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"Radera USB-lagring"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"Radera SD-kort"</string>
     <string name="small_font" msgid="2295331917424072635">"Liten"</string>
     <string name="medium_font" msgid="2068475425515133701">"Medium"</string>
     <string name="large_font" msgid="599055175160971446">"Stor"</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"SD-kort"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-lagring"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-kort"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Batteristatus"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Elkontakt:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Batteriskala:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Ändringarna börjar gälla när USB-kabeln har anslutits igen"</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"Aktivera USB-masslagring"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Totalt antal bytes:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"Inget SD-kort"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"USB-enheten ej demonterad"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"Inget SD-kort"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Tillgängliga bytes:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"SD-kort används som enhet för masslagring"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"Det är nu säkert att ta bort SD-kortet"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"SD-kortet togs bort medan det användes!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USB-lagringsenhetet används som masslagringsenhet"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"SD-kort används som enhet för masslagring"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"Säkert att ta bort USB-enheten"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"Det är nu säkert att ta bort SD-kortet"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"USB-enheten togs borts fast den användes!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"SD-kortet togs bort medan det användes!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Bytes som har använts:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"Skannar SD-kort för media…"</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"SD-kortet har monterats som skrivskyddat"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"Söker efter media på USB-enhet..."</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"Skannar SD-kort för media…"</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"Skrivskydd. USB-enhet monterad"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"SD-kortet har monterats som skrivskyddat"</string>
     <string name="next_label" msgid="4693520878012668114">"Nästa"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Språkkod"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Välj språk"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Välj aktivitet"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Enhetsinfo"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Batteriinformation"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Batterihistorik"</string>
     <string name="display_label" msgid="7403874003169865762">"Skärm"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Telefoninformation"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"SD-kort"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB-lagring"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SD-kort"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Proxy-inställningar"</string>
     <string name="cancel" msgid="6859253417269739139">"Avbryt"</string>
     <string name="settings_label" msgid="1626402585530130914">"Inställningar"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Inställningar"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Inställningar"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Flygplansläge"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Inaktivera alla trådlösa anslutningar"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Som högtalartelefon"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"För musik och media"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Kom ihåg inställningarna"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Använd närfältskommunikation för att läsa och utbyta taggar"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Aktivera Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Wi-Fi-inställningar"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Ange när du vill växla från Wi-Fi till mobildata"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Ett problem inträffade när policy för viloläge skulle anges."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"Mac-adress"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP-adress"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"IP-inställningar"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Spara"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Avbryt"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
     <string name="device_status" msgid="607405385799807324">"Status"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Telefonnummer, signal osv."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"SD-kort och telefonlagr."</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"Inställningar för lagring på SD-kort och i telefonen"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"Montera bort SD-kort, visa tillgängligt lagringsutrymme"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Lagring"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Lagringsinställningar"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"Demontera USB-lagringsenheten och visa tillgängligt lagringsutrymme"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"Montera bort SD-kort, visa tillgängligt lagringsutrymme"</string>
     <string name="status_number" msgid="5123197324870153205">"Mitt telefonnummer"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"PRL-version"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Inte tillgängligt"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Tid sedan systemstart"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Aktiveringstid"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Intern telefonlagring"</string>
-    <string name="sd_memory" msgid="151871913888051515">"SD-kort"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Intern lagring"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"USB-lagring"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"SD-kort"</string>
     <string name="memory_available" msgid="418542433817289474">"Tillgängligt utrymme"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Sätt in ett SD-kort för montering"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"Montera SD-kort"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"Montera SD-kortet"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"Montera bort SD-kort"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Demontera intern USB-lagring"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Demontera SD-kortet för säker borttagning"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Sätt i USB om du vill montera"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Sätt in ett SD-kort för montering"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Montera delad enhet"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"Montera SD-kort"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Demontera intern USB-lagring"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"Montera SD-kortet"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"Radera USB-lagring"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"Radera SD-kort"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Raderar alla data på telefonens interna USB-lagring, som musik och foton."</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Raderar alla data på telefonens SD-kort, som musik och foton"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Inte tillgängligt"</string>
     <string name="read_only" msgid="6702420168629076340">" (Skrivskyddad)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"Montera bort SD-kort"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"Om du monterar bort SD-kortet avbryts några av de program som körs och de kanske inte blir tillgängliga igen förrän du monterar tillbaka SD-kortet."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"Det gick inte att montera bort SD-kort"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"Det går inte att montera bort SD-kort. Försök senare."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"SD-kortet monteras bort. Aktuell status visas i meddelandeområdet."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"Demontera USB-enhet"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"Montera bort SD-kort"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"Om du demonterar USB-lagringsenheten avbryts några av de program som körs och de kanske inte blir tillgängliga igen förrän du monterar tillbaka USB-enheten."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"Om du monterar bort SD-kortet avbryts några av de program som körs och de kanske inte blir tillgängliga igen förrän du monterar tillbaka SD-kortet."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"USB-enheten har ej demonterats"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"Det gick inte att montera bort SD-kort"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"Det går inte att demontera USB-lagringsenheten. Försök igen senare."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"Det går inte att montera bort SD-kort. Försök senare."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"USB-lagringsenheten demonteras."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"Delad lagringsenhet monteras bort."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Monterar bort"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Monterar bort"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Batteristatus"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Återställning av standardinställningar för APN har slutförts"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Återställ standardinst."</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Raderar alla data på telefonen"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Detta tar bort alla data från telefonen, inklusive: "\n<li>"Ditt Google-konto"</li>\n<li>"Data och inställningar för system och program"</li>\n<li>"Hämtade program"</li>\n"Det tar inte bort:"\n<li>"Aktuell systemprogramvara och medföljande program"</li>\n<li>"Filer på SD-kortet, som musik eller bilder"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Alla data på telefonens "<b>"interna lagring"</b>" raderas, inklusive:"\n\n<li>"ditt Google-konto"</li>\n<li>"system- och programdata och inställningar"</li>\n<li>"hämtade appar"</li>\n\n"Om du vill ta bort alla data från telefonen måste du radera "<b>"USB-lagringsenheten"</b>"."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Alla data på telefonens "<b>"interna lagring"</b>" raderas, inklusive:"\n\n<li>"ditt Google-konto"</li>\n<li>"system- och programdata"</li>\n<li>"hämtade appar"</li>\n\n"Om du även vill ta bort musik, bilder och andra användardata måste du radera "<b>"SD-kortet"</b>"."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Radera USB-lagring"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Radera SD-kort"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Radera alla data på telefonens interna USB-lagring, som musik och foton."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Radera alla data på telefonens SD-kort, som musik och foton."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Återställ telefonen"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Vill du ta bort all personlig information och alla hämtade program? Det går inte att ångra åtgärden!"</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Radera allt"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Rita ditt grafiska lösenord"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Du måste rita ditt grafiska lösenord om du vill återställa telefonen."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Återställningen utfördes inte eftersom tjänsten för systemrensning inte är tillgänglig."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"Formatera SD-kort"</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"Tar bort alla data på SD-kortet"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Den här åtgärden raderar SD-kortet i telefonen. ALLA data på kortet försvinner!"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"Formatera SD-kort"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"Formatera SD-kort, radera alla mediafiler? Åtgärden kan inte ångras!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"Radera USB-lagring"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"Radera SD-kort"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"Raderar allt på USB-enheten"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"Tar bort alla data på SD-kortet"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Åtgärden raderar USB-lagringsenheten. Du förlorar "<b>"alla"</b>" data som sparats där."</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Den här åtgärden raderar SD-kortet. "<b>"Alla"</b>"data på kortet försvinner."</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"Radera USB-lagring"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"Radera SD-kort"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"Radera USB-lagringsenheten och ta bort alla filer? Åtgärden kan inte ångras."</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"Radera SD-kort och alla filer på kortet? Åtgärden kan inte ångras!"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Radera allt"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Rita ditt grafiska lösenord"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Du måste rita ditt grafiska lösenord för att bekräfta formateringen av SD-kortet."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"Du måste rita ditt grafiska lösenord om du vill bekräfta formateringen av USB-lagringsenheten."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"Du måste rita ditt grafiska lösenord om du vill bekräfta formateringen av SD-kortet."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Samtalsinställningar"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Ställ in röstbrevlåda, vidarebefordra samtal, samtal väntar, nummerpres."</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Internetdelning"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Se plats i programmen (till exempel kartor) med hjälp av trådlösa nätverk"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Plats fastställs av Wi-Fi och/eller mobila nätverk"</string>
     <string name="location_gps" msgid="6296125378829097831">"Använd GPS-satelliter"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Hittar till gatunivå när du söker (avmarkera om du vill spara batteri)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Korrekt på gatunivå när du söker"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Hitta till gatunivå (kräver mer batteri och fungerar endast utomhus)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Använd assisterad GPS"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"Använd servern för att förbättra GPS-funktionen (avmarkera om du vill minska nätverksbelastningen)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Program"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Data"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Avinstallera"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Inaktivera"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Aktivera"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Rensa data"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Avinstallera uppdateringar"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Du har valt att starta detta program som standard för vissa åtgärder."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Inga standardinställningar har angetts."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Rensa standardinställn."</string>
     <string name="unknown" msgid="1592123443519355854">"Okänd"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Sortera"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Sortera efter namn"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Sortera efter storlek"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Visa tjänster som körs"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Visa cachade processer"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Hantera utrymme"</string>
     <string name="filter" msgid="2018011724373033887">"Filtrera"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Välj filteralternativ"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Alla"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"Hämtade"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"Kör"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"På SD-kort"</string>
-    <string name="loading" msgid="3200408047793887917">"Läser in…"</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"USB-lagring"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"På SD-kort"</string>
+    <string name="disabled" msgid="9206776641295849915">"Inaktiverat"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Inga program."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Intern lagring"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USB-lagring"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SD-kortslagring"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Räknar om storlek…"</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Radera"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Alla programmets data tas bort permanent. Det inkluderar alla filer, inställningar, konton, databaser och så vidare."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"version <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Flytta"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Flytta till telefon"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"Flytta till SD-kort"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"Flytta till USB-enhet"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"Flytta till SD-kort"</string>
     <string name="moving" msgid="6431016143218876491">"Flyttar"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Det finns inte tillräckligt med ledigt minne."</string>
     <string name="does_not_exist" msgid="837163572898468245">"Programmet finns inte."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"Den angivna installationsplatsen är inte giltig."</string>
     <string name="system_package" msgid="1030561474413022831">"Det går inte att installera systemuppdateringar på externa media."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Tvingad avslutning"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Programmet kommer att startas direkt. Vill du framtvinga avslutning?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Om du tvingar ett program att avslutas kan det uppstå fel. Är du säker?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Flytta program"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Det gick inte att flytta program. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Önskad installationsplats"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Ändra önskad installationsplats för nya program."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Använt utrymme"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Visa lagring som används av program"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Aktiva tjänster"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Visa och styr aktiva tjänster"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Startar om"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Det finns inga aktiva tjänster"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Vill du avbryta tjänsten?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"Den här tjänsten körs inte igen förrän du startar om den. Den kan ha oönskad effekt på programmet <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Stopp"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"Avbryt"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Startades av ett program: tryck om du vill avbryta"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: tryck om du vill hantera"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Tillg.: <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> i <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Övriga: <xliff:g id="MEMORY">%2$s</xliff:g> i <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"Process: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Cachade bakgrundsprocesser"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Inget körs."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Startades av ett program."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> led."</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> anv."</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> process och <xliff:g id="NUMSERVICES">%2$d</xliff:g> tjänst"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> process och <xliff:g id="NUMSERVICES">%2$d</xliff:g> tjänster"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processer och <xliff:g id="NUMSERVICES">%2$d</xliff:g> tjänst"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> processer och <xliff:g id="NUMSERVICES">%2$d</xliff:g> tjänster"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Program som körs"</string>
+    <string name="no_services" msgid="7133900764462288263">"Inte aktiv"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Tjänster"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"Processer"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Stoppa"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Inställningar"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Tjänsten startades av programmet. Om du avbryter den kan det bli fel i programmet."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Programmet kan inte stängas av på ett säkert sätt. Om du stänger av det kan ditt arbete gå förlorat."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Detta är en gammal programprocess som sparats för eventuella framtida behov. Det finns ingen anledning att avsluta den."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g> används just nu. Tryck på Inställningar om du vill styra det."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Huvudprocess som används."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"Tjänsten <xliff:g id="COMP_NAME">%1$s</xliff:g> används."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Leverantören <xliff:g id="COMP_NAME">%1$s</xliff:g> används."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Avsluta systemtjänst?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Är du säker på att du vill avsluta systemtjänsten? Vissa funktioner på telefonen kan sluta fungera och du måste eventuellt stänga av telefonen och starta om den igen för att åtgärda problemet."</string>
     <string name="language_settings" msgid="502219872342167227">"Språk och tangentbord"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Inställningar för språk och tangentbord"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Ställ in alternativ för språkkod (land och område), textinmatning och autokorrigering"</string>
-    <string name="language_category" msgid="3391756582724541530">"Språkkodsinställningar"</string>
-    <string name="text_category" msgid="6342540511465136739">"Textinställningar"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Språkinställningar"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Tangentbordsinställningar"</string>
     <string name="phone_language" msgid="1165758957501090679">"Välj språk"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Ersätt automatiskt"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Testa"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Telefoninformation"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Batteriinformation"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Batterihistorik"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Snabbstart"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Ställ in kortkommandon för att starta program"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Tilldela program"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Hantera textinmatningsalternativ"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"<xliff:g id="IME_NAME">%1$s</xliff:g>-inställningar"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Inställningar för tangentbordet på skärmen"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Enhetens tangentbord"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Inställningar för inbyggt tangentbord"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Inbyggt tangentbord"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Inställningar för inbyggt, fysiskt tangentbord"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Utveckling"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Ange alternativ för programutveckling"</string>
     <string name="enable_adb" msgid="7982306934419797485">"USB-felsökning"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"USB-felsökning ska endast användas i utvecklingssyfte. Felsökningen kan användas för att kopiera data mellan datorn och enheten, installera program på enheten utan avisering och läsa loggdata."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Välj gadget"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Välj widget"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"Information för användar-ID <xliff:g id="NUMBER">%d</xliff:g>"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"Användar-id <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"Information om nätverksanvändning för <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Mottagna bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Skickade bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Totalt antal byte: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"Information om CPU-användning för <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Användartid"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Systemtid:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Total tid:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Startar: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g> d <xliff:g id="HOURS">%2$d</xliff:g> h <xliff:g id="MINUTES">%3$d</xliff:g> m <xliff:g id="SECONDS">%4$d</xliff:g> s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g> h <xliff:g id="MINUTES">%2$d</xliff:g> m <xliff:g id="SECONDS">%3$d</xliff:g> s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g> m <xliff:g id="SECONDS">%2$d</xliff:g> s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g>s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Paket som delar denna UID:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Ingen information om batterianvändning är tillgänglig"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Sensor:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Delaktiveringslås:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Sensor som används av paket:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"Har använts <xliff:g id="COUNT">%1$d</xliff:g> gånger av <xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Har använts <xliff:g id="COUNT">%1$d</xliff:g> gånger av en av:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Kör"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Skärm på"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Telefon på"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Tid som har tillbringats utan vilotid:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Tid då skärmen har varit aktiverad:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Tid då telefonen har varit aktiverad:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"På batteri:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Inkopplad:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Användningsstatistik"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Användningsstatistik"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Sortera efter"</string>
@@ -865,12 +908,19 @@
     <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>
     <string name="battery_since_reset" msgid="7464546661121187045">"Batteriförbrukning sedan återställning"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> på batteri"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"<xliff:g id="TIME">%1$s</xliff:g> sedan bortkoppling"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Laddar"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Skärm på"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS på"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"WiFi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Aktiv"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Telefonsignal"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Aktiv tid för enheten"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"WiFi på sedan"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi på sedan"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"WiFi i tid"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"WiFi i tid"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> -  <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Information om batteriförbrukning"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Information om användning"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Telefonen är inaktiv"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"CPU totalt"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPU i förgrunden"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Behåll aktiv"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"WiFi körs"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Telefon"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Skickade data"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Mottagna data"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Programinformation"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Programinställningar"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Skärminställningar"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"WiFi-inställningar"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"WiFi-inställningar"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Bluetooth-inställningar"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Batteri som förbrukats av röstsamtal"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Batteri som förbrukas när telefonen är inaktiv"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batteri som förbrukats av Bluetooth"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Inaktivera Bluetooth när du inte använder funktionen"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Försök ansluta till en annan Bluetooth-enhet"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Batteri som förbrukats av program som körs"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Batteri som förbrukats av programmet"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Avsluta eller avinstallera programmet"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Inaktivera GPS när det inte används"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Kontrollera GPS manuellt så att inte programmet kan använda funktionen"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"Programmet erbjuder eventuellt inställningar som minskar batteriförbrukningen"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> sedan bortkoppling"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"Sedan senaste bortkoppling <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Inte installerad"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Kvinna"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Man"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Talsyntesmotor installerad"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Aktivera ny motor före användning"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Tillåt att program får åtkomst till säkra certifikat och andra uppgifter"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Ange lösenord"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Ange lösenord för lagring av uppgifter."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"Installera från SD-kort"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Installera krypterade certifikat från SD-kort"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"Installera från USB-enhet"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"Installera från SD-kort"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"Installera krypterade certifikat från USB-enhet"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"Installera krypterade certifikat från SD-kort"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Ange lösenord"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Ange eller ändra lösenord för uppgiftslagring"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Rensa lagring"</string>
@@ -1068,6 +1124,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Krypterat filsystem"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Kryptera privata användardata"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Aktivera krypterat filsystemarkiv för privata användardata på den här enheten"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Aktivering av krypterade filsystem kräver datarensning på enheten."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Inaktivering av krypterade filsystem kräver datarensning på enheten."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Aktivera"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Inaktivera"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"Avbryt"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Lägesändringen för krypterat filsystem avbröts."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Varning: växling av krypterat filsystem."</string>
     <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>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Säkerhetskopiera och återställ"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Personliga data"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Säkerhetskopiera mina data"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Säkerhetskopiera mina inställningar och andra programdata."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Spara en säkerhetskopia av programdata, WiFi-lösenord och andra inställningar på Googles servrar"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Automatisk återställning"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Om jag installerar om ett program eller återställer säkerhetskopierade inställningar eller data."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Om jag installerar om en app eller återställer säkerhetskopierade inställningar eller data"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Säkerhetskopia"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Vill du avbryta säkerhetskopieringen av dina inställningar och programdata och radera alla kopior på Googles servrar?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Vill du avbryta säkerhetskopieringen av dina WiFi-lösenord, bokmärken och andra inställningar och programdata och radera alla kopior på Googles servrar?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Inställningar för enhetsadministration"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Enhetsadministratör"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Inaktivera"</string>
diff --git a/res/values-tr/arrays.xml b/res/values-tr/arrays.xml
index 98d84d2..3749825 100644
--- a/res/values-tr/arrays.xml
+++ b/res/values-tr/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"Takılı olduğunda hiçbir zaman"</item>
     <item msgid="1986753720941888596">"Hiçbir zaman"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"CPU kullanımı"</item>
-    <item msgid="6401018715947316517">"Ağ kullanımı"</item>
-    <item msgid="188092590354892392">"GPS kullanımı"</item>
-    <item msgid="8414109131222049141">"Algılayıcı kullanımı"</item>
-    <item msgid="1327904325081257093">"Kısmi uyandırma kullanımı"</item>
-    <item msgid="4832254146664706277">"Diğer kullanım"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"Fişten son çekildikten itibaren"</item>
-    <item msgid="166936313535197598">"Açılıştan itibaren toplam"</item>
-    <item msgid="4793941382744963893">"Tüm zamanlardaki toplam"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"Kullanım Süresi"</item>
     <item msgid="1908750532762193304">"Sayımı Başlat"</item>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index c784665..b3876e8 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"SD kartının bağlantısını kes"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"SD kartı biçimlendir"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"USB dep brmnn bağln kes"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"SD kartının bağlantısını kes"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"USB depolama birimini sil"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"SD kartı sil"</string>
     <string name="small_font" msgid="2295331917424072635">"Küçük"</string>
     <string name="medium_font" msgid="2068475425515133701">"Ortam"</string>
     <string name="large_font" msgid="599055175160971446">"Büyük"</string>
     <string name="font_size_save" msgid="3450855718056759095">"Tamam"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"SD kart"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB depolama birimi"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD kart"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"Pil durumu:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"Güç fişi:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"Pil skalası:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"Değişiklikler USB kablosu bağlandığında devreye girer"</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"USB yığın depolamasını etkinleştir"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"Toplam bayt sayısı:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"SD kart yok"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"USB deplm birimi bağlı değil"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"SD kart yok"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"Kullanılabilir bayt:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"SD kart, yığın depolama cihazı olarak kullanılıyor"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"SD kart şimdi güvenli olarak çıkarılabilir"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"SD kart kullanılırken çıkarıldı!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USB dep brmi, yığın dep cihazı olarak kullanılıyor"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"SD kart, yığın depolama cihazı olarak kullanılıyor"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"USB dep brmi şimdi güvenle çıkarılabilir"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"SD kart şimdi güvenli olarak çıkarılabilir"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"USB dep birimi kullanılırken çıkarıldı!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"SD kart kullanılırken çıkarıldı!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"Kullanılan bayt miktarı:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"SD kartta medya aranıyor…"</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"SD kart salt okunur olarak bağlandı"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"USB dep brdki medya taranyr..."</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"SD kartta medya aranıyor…"</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"USB dep birm salt oknr takıldı"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"SD kart salt okunur olarak bağlandı"</string>
     <string name="next_label" msgid="4693520878012668114">"İleri"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"Yerel ayar"</string>
     <string name="select_your_language" msgid="1146235168951906084">"Dilinizi seçin"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"Etkinlik seç"</string>
     <string name="device_info_label" msgid="6551553813651711205">"Cihaz bilgileri"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"Pil bilgileri"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"Pil geçmişi"</string>
     <string name="display_label" msgid="7403874003169865762">"Ekran"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"Telefon bilgileri"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"SD kart"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB depolama birimi"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SD kart"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Proxy ayarları"</string>
     <string name="cancel" msgid="6859253417269739139">"İptal"</string>
     <string name="settings_label" msgid="1626402585530130914">"Ayarlar"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"Ayarlar"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"Ayarlar"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"Uçak modu"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"Tüm kablosuz bağlantıları devre dışı bırak"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"Telefon hoparlörü olarak"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"Müzik ve medya için"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"Ayarları anımsa"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"Etkt okumk ve değş yap içn Yakın Alan İletşm\'ni kullnn"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Kablosuz"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Kablosuzu aç"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Kablosuz ayarları"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"Kablosuzdan mobil veriye geçme zamanını belirt"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"Uyku politikası ayarlanırken bir sorun oluştu."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MAC adresi"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP adresi"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"IP ayarları"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Kaydet"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"İptal"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"Durum"</string>
     <string name="device_status" msgid="607405385799807324">"Durum"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"Telefon numarası, sinyal vb."</string>
-    <string name="storage_settings" msgid="6681164315506788024">"SD kart ve telefon depolama alanı"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"SD kart ve telefon depolama alanı ayarları"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"SD kartın bağlantısını kes, kull. Depolama alanını görüntüle"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"Depolama"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"Depolama ayarları"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"USB depolama biriminin bağlantısını kes, kullanılabilir depolama alanını görüntüle"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"SD kartın bağlantısını kes, kull. Depolama alanını görüntüle"</string>
     <string name="status_number" msgid="5123197324870153205">"Telefon numaram"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MİN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"PRL Sürümü"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"Kullanılamıyor"</string>
     <string name="status_up_time" msgid="7294859476816760399">"Açık kalma süresi"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"Uyanık geçen süre"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"Dahili telefon depolama alanı"</string>
-    <string name="sd_memory" msgid="151871913888051515">"SD kart"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"Dahili dep birm"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"USB depolama birimi"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"SD kart"</string>
     <string name="memory_available" msgid="418542433817289474">"Kullanılabilir alan"</string>
     <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>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"Eklemek için bir SD kart yerleştirin"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"SD kartı ekle"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"SD kartı ekle"</string>
-    <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_eject" product="default" msgid="6915293408836853020">"SD kartının bağlantısını kes"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"Dahili USB depolamanın bağ kes"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"Güvenle çıkarabilmnz için SD kartın bağl kesin"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"Bğl için USB dep brm takn"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"Eklemek için bir SD kart yerleştirin"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"Payl deplm birimini bağla"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"SD kartı ekle"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"Dahili USB depol birimini ekle"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"SD kartı ekle"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"USB depolama birimini sil"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"SD kartı sil"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"Telefonunun USB depolama birimindeki müzik ve foto gibi tüm veriler silinir."</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"Telefonun SD kartındaki müzik ve foto gibi tüm veriler silinir."</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"Kullanılamıyor"</string>
     <string name="read_only" msgid="6702420168629076340">" (Salt okunur)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"SD kartının bağlantısını kes"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"SD kartı çıkarırsanız, kullanmakta olduğunuz bazı uygulamalar durur ve SD kart yeniden takılıncaya kadar kullanılamayabilir."</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"SD kartın bağlantısı kesilemedi"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"SD kartın bağlantısı kesilemiyor. Daha sonra yeniden deneyin."</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"SD kart çıkarılacak. Durum bilgisi için bildirim alanını kontrol edin."</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"USB dep brmnn bağln kes"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"SD kartının bağlantısını kes"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"USB depolama biriminin bağlantısını keserseniz, kullanmakta olduğunuz bazı uygulamalar durur ve USB depolama birimi yeniden bağlanıncaya kadar kullanılamayabilir."</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"SD kartı çıkarırsanız, kullanmakta olduğunuz bazı uygulamalar durur ve SD kart yeniden takılıncaya kadar kullanılamayabilir."</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"USB depl birm bağln kesilemedi"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"SD kartın bağlantısı kesilemedi"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"USB depolama biriminin bağlantısı kesilemiyor. Daha sonra tekrar deneyin."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"SD kartın bağlantısı kesilemiyor. Daha sonra yeniden deneyin."</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"USB depolama biriminin bağlantısı kesilecek."</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"SD kart bağlantısı kesilecek."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Kaldırılıyor"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"Kaldırma işlemi devam ediyor"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"Pil durumu"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"Varsayılan APN ayarlarını sıfırlama tamamlandı"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"Fabrika verilerine sıfırla"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"Telefondaki tüm verileri siler"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"Bu, şunlar da dahil olmak üzere telefonunuzdaki tüm verileri silecektir:"\n<li>"Google hesabınız"</li>\n<li>"Sistem ve uygulama verisi ve ayarları"</li>\n<li>"İndirilmiş uygulamalar"</li>\n"Şunlar silinmeyecektir:"\n<li>"Geçerli sistem yazılımı ve donanımla gelen uygulamalar"</li>\n<li>"Müzik veya resim gibi SD kart dosyaları"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"Bu işlem, "<b></b>\n"Google hesabınız"\n<li></li>"Sistem ve uygulama verileri ve ayarları"\n<li></li>"İndirilen uygulamalar"\n<li></li>" da dahil olmak üzere telefonunuzun "\n"dahili depolama birimindeki"\n" tüm verilerin silinmesine neden olur. Bu telefondaki tüm verilerin silinmesi için "<b>"USB depolama biriminin"</b>" silinmesi gerekir."\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"Bu işlem, "\n\n<li>"Google hesabınız"</li>\n<li>"Sistem ve uygulama verileri ve ayarları"</li>\n<li>"İndirilen uygulamalar"</li>\n\n" da dahil olmak üzere telefonunuzun "<b>"dahili depolama birimindeki"</b>" tüm verilerin silinmesine neden olur. Müzik, resimler ve diğer kullanıcı verilerinin de silinmesi için "<b>"SD kartın"</b>" silinmesi gerekir."\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"USB depolama birimini sil"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"SD kartı sil"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"Telefonunun USB depolama birimindeki müzik veya foto gibi tüm veriler silinir."</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"Telefonunun SD kartındaki müzik ve foto gibi tüm veriler silinir."</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"Telefonu sıfırla"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"Tüm kişisel bilgilerinizi ve indirilen tüm uygulamaları silmek istiyor musunuz? Bu işlem geri döndürülemez!"</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"Her şeyi sil"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"Kilit açma deseninizi çizin"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"Telefon sıfırlamayı onaylamak için kilit açma deseninizi çizmelisiniz."</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"Sistem Temizleme hizmeti kullanılamadığından sıfırlama yapılmadı."</string>
-    <string name="media_format_title" msgid="4671276096695789895">"SD kartı biçimlendir."</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"SD karttaki tüm verileri siler"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"Bu işlem telefondaki SD kartı siler. Karttaki TÜM verileri kaybedersiniz!"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"SD kartı biçimlendir"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"SD kartı, üzerindeki tüm medya verileriniz silinerek biçimlendirilsin mi? İşlem geri alınamaz!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"USB depolama birimini sil"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"SD kartı sil"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"USB dep brmdki tüm verlr siler"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"SD karttaki tüm verileri siler"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"Bu işlem, USB depolama biriminin silinmesine neden olur. Burada saklanan "<b>"tüm"</b>" verileri kaybedersiniz!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"Bu işlem SD kartı siler. Karttaki "<b>"tüm"</b>" verileri kaybedersiniz!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"USB depolama birimini sil"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"SD kartı sil"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"USB dep br silinsin mi? Dep brmdde saklanan tüm dosylr silinir. Geri alınamaz!"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"SD kart silinsin mi? Burada saklanan tüm dosyalar silinir. Geri alınamaz!"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"Her şeyi sil"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"Kilit açma deseninizi çizin"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"Bir SD kart biçimini onaylamak için kilit açma deseninizi çizmelisiniz."</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"USB depolama birimini biçimlendirmek istediğinizi onaylamak için kilit açma deseninizi çizmelisiniz."</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"SD kartı silmek istediğinizi onaylamak için kilit açma deseninizi çizmelisiniz."</string>
     <string name="call_settings_title" msgid="5188713413939232801">"Çağrı ayarları"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"Sesli mesaj, çağrı yönlendirme ve bekletme, arayan kimliğini ayarla"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"Doğrudan bağlantı oluşturma"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"Kablosuz ağları kullanarak uygulamalarda (Google Haritalar gibi) konumu gör"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"Konum kablosuz ve/veya cep telefonu ağları tarafından belirlenir"</string>
     <string name="location_gps" msgid="6296125378829097831">"GPS uydularını kullan"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"Konum bulunurken sokak düzeyinde kesinliğe ayarlayın (pilden tasarruf etmek için onay işaretini kaldırın)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"Yer bulunurken sokak düzeyinde kesinlik"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"Sokak düzeyinde yer bul (daha fazla pil ve gökyüzü görünümü gerektirir)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"Desteklenen GPS kullan"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"GPS\'ye destek olmak için sunucu kullan (ağ kullanımını azaltmak için onay işaretini kaldırın)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"Uygulama"</string>
     <string name="data_size_label" msgid="8679376373625710107">"Veri"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"Kaldır"</string>
+    <string name="disable_text" msgid="6544054052049395202">"Devre dışı bırak"</string>
+    <string name="enable_text" msgid="9217362512327828987">"Etkinleştir"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"Verileri temizle"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Güncellemeleri kaldır"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"Bu uygulamayı bazı işlemler için varsayılan olarak başlatmayı seçtiniz."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Hiçbir varsayılan ayarlanmadı."</string>
     <string name="clear_activities" msgid="7408923511535174430">"Varsayılanları temizle"</string>
     <string name="unknown" msgid="1592123443519355854">"Bilinmiyor"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"Sırala"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"Ada göre sırala"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"Boyuta göre sırala"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"Çalışan hizmetleri göster"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"Önbllğe alınan işlm göstr"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"Alanı yönet"</string>
     <string name="filter" msgid="2018011724373033887">"Filtre"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"Filtre seçeneklerini belirle"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"Tümü"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"İndirilen"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"Çalışıyor"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"SD kartta"</string>
-    <string name="loading" msgid="3200408047793887917">"Yükleniyor…"</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"USB depolama birimi"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"SD kartta"</string>
+    <string name="disabled" msgid="9206776641295849915">"Devre dışı"</string>
+    <string name="no_applications" msgid="5190227407135243904">"Uygulama yok."</string>
+    <string name="internal_storage" msgid="1584700623164275282">"Dahili dep brm"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USB dep birimi"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SD kart dep brm"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Boyut yeniden hesaplanıyor…"</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"Sil"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"Bu uygulamanın tüm verileri kalıcı olarak silinecek. Bu veriler arasında tüm dosyalar, ayarlar, hesaplar, veritabanları vs. yer alıyor."</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"sürüm <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"Taşı"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"Telefona taşı"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"SD karta taşı"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"USB depl birimine taşı"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"SD karta taşı"</string>
     <string name="moving" msgid="6431016143218876491">"Taşınıyor"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"Yeterli depolama alanı kalmadı."</string>
     <string name="does_not_exist" msgid="837163572898468245">"Uygulama mevcut değil."</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"Belirtilen yükleme konumu geçerli değil."</string>
     <string name="system_package" msgid="1030561474413022831">"Sistem güncellemeleri, harici medyaya yüklenemez."</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"Durmaya zorla"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"Bu uygulama hemen yeniden başlatılacak. Durmaya zorlamak istediğinizden emin misiniz?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"Bir uygulamayı zorla durdurmak hatalı davranmasına neden olabilir. Emin misiniz?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"Uygulamayı taşı"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"Uygulama taşınamadı. <xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"Tercih edilen yükleme konumu"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"Yeni uygulamalar için tercih edilen yükleme konumunu değiştirin."</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"Depolama kullanımı"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"Uygulamalar tarafından kullanılan depolama alanını görüntüle"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"Çalışan hizmetler"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"Şu anda çalışan hizmetleri görüntüleyin ve denetleyin"</string>
     <string name="service_restarting" msgid="2242747937372354306">"Yeniden başlatılıyor"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"Çalışan hizmet yok"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"Hizmet durdurulsun mu?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"Bu hizmet, yeniden başlatılana kadar çalışmayacak. Bu durum, <xliff:g id="APPLICATION">%1$s</xliff:g> uygulamasında istenmeyen sonuçlara yol açabilir."</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"Durdur"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"İptal"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"Uygulama tarafından başlatıldı: durdurmak için dokunun"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: yönetmek için dokunun"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"Kullanılabilir: <xliff:g id="COUNT">%1$d</xliff:g> hesabında <xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"Diğer: <xliff:g id="COUNT">%1$d</xliff:g> hesabında <xliff:g id="MEMORY">%2$s</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"İşlem: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"Önblğe alınan arka plan işlemi"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"Hiçbir şey çalışmıyor."</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"Uygulama tarafından başlatıldı."</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> boş"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> kull."</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> işlem ve <xliff:g id="NUMSERVICES">%2$d</xliff:g> hizmet"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> işlem ve <xliff:g id="NUMSERVICES">%2$d</xliff:g> hizmet"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> işlem ve<xliff:g id="NUMSERVICES">%2$d</xliff:g> hizmet"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> işlem ve <xliff:g id="NUMSERVICES">%2$d</xliff:g> hizmet"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"Çalışan uygulama"</string>
+    <string name="no_services" msgid="7133900764462288263">"Etkin değil"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"Hizmetler"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"İşlemler"</string>
+    <string name="service_stop" msgid="6369807553277527248">"Durdur"</string>
+    <string name="service_manage" msgid="1876642087421959194">"Ayarlar"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"Bu hizmet, uygulaması tarafından başlatıldı. Hizmetin durdurulması uygulamanın başarısız olmasına neden olabilir."</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"Bu uygulama güvenli bir şekilde durdurulamıyor. Bu, bazı mevcut işlerinizin kaybına neden olabilir."</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"Bu, tekrar ihtiyaç duyl halinde daha yüksek hız elde etmek için kullanılan eski bir uyg işlemidir. Genellikle bunu durdurmanız gerekmez."</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: şu anda kullanılıyor. Kontrol etmek için Ayarlar\'a dokunun."</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"Kullanımda olan ana işlem."</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"<xliff:g id="COMP_NAME">%1$s</xliff:g> hizmeti kullanımda."</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"Sağlayıcı <xliff:g id="COMP_NAME">%1$s</xliff:g> kullanımda."</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"Sis hiz durdrlsn mu?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"Bu sistem hiz durdurulmasını istediğinize emin misiniz? Durdurulursa, telefonunuzun bazı özellikleri, telfn kapatılıp yeniden açılmadan düzgün çalışmayabilir."</string>
     <string name="language_settings" msgid="502219872342167227">"Dil ve klavye"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Dil ve klavye ayarları"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"Yer (dil ve bölge), metin girişi ve ot. düzeltme seçeneklerini ayarla"</string>
-    <string name="language_category" msgid="3391756582724541530">"Yerel ayar"</string>
-    <string name="text_category" msgid="6342540511465136739">"Metin ayarları"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"Dil ayarları"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"Klavye ayarları"</string>
     <string name="phone_language" msgid="1165758957501090679">"Dil seçin"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"Otomatik değiştir"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"Test ediliyor"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"Telefon bilgileri"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"Pil bilgileri"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"Pil geçmişi"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"Hızlı başlat"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"Uygulama başlatma klavye kısayollarını ayarla"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"Uygulama ata"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"Metin giriş seçeneklerini yönet"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"<xliff:g id="IME_NAME">%1$s</xliff:g> ayarları"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Ekran klavyesi ayarları"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Cihaz klavyesi"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Yerleşik klavye ayarları"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"Yerleşik klavye"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"Yerleşik, fiziksel klavye ayarları"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"Geliştirme"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"Uygulama geliştirme için seçenekleri ayarla"</string>
     <string name="enable_adb" msgid="7982306934419797485">"USB hata ayıklaması"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"USB hata ayıklaması yalnızca geliştirme amaçlıdır. Verileri bilgisayarınızla cihazınız arasında kopyalamak, bildirim göndermeksizin uygulamaları cihazınıza yüklemek ve günlük verilerini okumak için kullanılabilir."</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"Gadget seç"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"Widget seç"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"UID <xliff:g id="NUMBER">%d</xliff:g> ayrıntıları"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"<xliff:g id="APP_NAME">%1$s</xliff:g> için ağ kullanım ayrıntıları:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"Alınan bayt: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"Gönderilen bayt: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"Toplam bayt: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"<xliff:g id="APP_NAME">%1$s</xliff:g> için CPU kullanım ayrıntıları:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"Kullanıcı süresi:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"Sistem saati:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"Toplam süre:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"Başlama: <xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g>g <xliff:g id="HOURS">%2$d</xliff:g>s <xliff:g id="MINUTES">%3$d</xliff:g>d <xliff:g id="SECONDS">%4$d</xliff:g>s"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g>s <xliff:g id="MINUTES">%2$d</xliff:g>d <xliff:g id="SECONDS">%3$d</xliff:g>s"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g>d <xliff:g id="SECONDS">%2$d</xliff:g>s"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g>s"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"Bu UID\'yi paylaşan paketler:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"Pil kullanım verisi yok"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"Algılayıcı:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"Kısmi Uyandırma kilidi:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"Paketlerin kullandığını algılayıcı:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"<xliff:g id="PACKAGE">%2$s</xliff:g> tarafından <xliff:g id="COUNT">%1$d</xliff:g> kez kullanıldı"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"Şunlardan biri tarafından <xliff:g id="COUNT">%1$d</xliff:g> kez kullanıldı:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"Çalışıyor"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"Ekran açık"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"Telefon açık"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"Uyku dışında harcanan zaman:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"Ekran açıkken harcanan süre:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"Telefon açıkken harcanan süre:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"Pilde:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"Takıldı:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Kullanım istatistikleri"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Kullanım istatistikleri"</string>
     <string name="display_order_text" msgid="8592776965827565271">"Sıralama ölçütü:"</string>
@@ -865,12 +908,19 @@
     <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>
     <string name="battery_since_reset" msgid="7464546661121187045">"Sıfırlamadan itibaren pil kullanımı"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"<xliff:g id="TIME">%1$s</xliff:g> pilde"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"Fişten çekildikten itibaren <xliff:g id="TIME">%1$s</xliff:g>"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"Şarj oluyor"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"Ekran açık"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS açık"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Kablosuz"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"Uyanık"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"Telefon sinyali"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"Cihazın açılma zamanı"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"Kablosuz özelliğinin açık olduğu süre"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"Kablosuz özelliğinin açık olduğu süre"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Zamnnd kablsz"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Zamnnd kablsz"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> -  <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"Pil kullanım bilgileri"</string>
     <string name="details_subtitle" msgid="32593908269911734">"Ayrıntıları kullan"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"Telefon boşta"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"Toplam CPU"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPU ön planı"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"Uyanık tut"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Kablosuz çalışıyor"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"Telefon"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"Gönderilen veriler"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"Alınan veriler"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"Uygulama bilgileri"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"Uygulama ayarları"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"Ekran ayarları"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"Kablosuz ayarları"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Kablosuz ayarları"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"Bluetooth ayarları"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"Sesli aramalar tarafından kullanılan pil"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"Telefon boştayken kullanılan pil"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"Bluetooth tarafından kullanılan pil"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Bluetooth\'u kullanmadığınız zamanlarda kapatın"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Farklı bir Bluetooth cihazına bağlanmaya çalış"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"Çalışan uygulamalar tarafından kullanılan pil"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"Uygulama tarafından kullanılan pil"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"Uygulamayı durdur veya kaldır"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"Kullanmadığınız zamanlarda GPS\'yi kapatın"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"Uygulamanın kullanmaması için GPS\'yi manuel olarak denetleyin"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"Uygulama, pil kullanımını azaltmak için ayarlar önerebilir"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"Fişten çekildikten itibaren <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> için fişten son çekildikten itibaren"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"Yüklü değil"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"Bayan"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"Bay"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"Konuşma sentezi motoru yüklendi"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"Kull önce yeni motoru etknlştr"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"Uygulamaların güvenli sertifikalara ve diğer kimlik bilgilerine erişmesine izin verin"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"Şifreyi girin"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"Kimlik bilgileri deposunun şifresini girin."</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"SD karttan yükle"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"SD karttan şifrelenmiş sertifikaları yükleyin"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"USB dep biriminden yükle"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"SD karttan yükle"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"USB dep br şifr srtfk ykl"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"SD karttan şifrelenmiş sertifikaları yükleyin"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"Şifreyi ayarla"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"Kimlik bilgileri deposunun şifresini ayarlayın veya değiştirin"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"Depoyu temizle"</string>
@@ -1068,6 +1124,16 @@
     <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>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"Şifrelenmiş Dosya Sistemi"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"Özel kullanıcı verilerini şifrele"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"Bu cihazdaki özel kullanıcı verileri için şifrelenmiş dosya sistemi depolamasını etkinleştir"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"Şifrelenmiş Dosya Sistemlerini etkinleştirilmek, cihazda veri silme işlemi yapılmasını gerektirir."</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"Şifrelenmiş Dosya Sistemlerini devre dışı bırakmak, cihazda veri silme işlemi yapılmasını gerektirir."</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"Etkinleştir"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"Devre dışı bırak"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"İptal"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"Şifrelenmiş Dosya Sistemleri modu değişikliği iptal edildi."</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"Şifrelenmiş Dosya Sistemi Uyarısı."</string>
     <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>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"Yedekleme ve geri yükleme"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"Kişisel veriler"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"Verilerimi yedekle"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"Ayarlarımı ve diğer uygulama verilerimi yedekle."</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"Uyg verilerini, kablsz kulnm şifre ve diğ ayarları Google sunuclrnda yedekleyin"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Otomatik geri yükle"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"Bir uygulamayı yeniden yüklersem, yedeklenen ayarları veya diğer verileri geri yükle."</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"Bir uyg\'ı tekr yüklersem, yedeklenen ayarlr veya diğr verilr geri yükle"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"Yedekle"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"Ayarlarınızın ve uygulama verilerinizin yedeklenmesini durdurmak ve Google sunucularındaki tüm kopyaları silmek istediğinizden emin misiniz?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"Kablsz şifrelernzn, yer işaretlerinzn ve diğ ayarlrnz ile uyg verilernzn yedeklnmsn durdurmak ve Google sunclrndki tüm kopylr silmek istdğn emin misiniz?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"Aygıt yönetimi ayarları"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"Cihaz yöneticisi"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"Etkinliğini Kaldır"</string>
diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml
index dee805a..18cd1a4 100644
--- a/res/values-zh-rCN/arrays.xml
+++ b/res/values-zh-rCN/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"充电时永不休眠"</item>
     <item msgid="1986753720941888596">"永不休眠"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"CPU 使用率"</item>
-    <item msgid="6401018715947316517">"网络使用率"</item>
-    <item msgid="188092590354892392">"GPS 使用率"</item>
-    <item msgid="8414109131222049141">"传感器使用情况"</item>
-    <item msgid="1327904325081257093">"部分唤醒使用情况"</item>
-    <item msgid="4832254146664706277">"其他使用情况"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"自上次拔下电源后的时间"</item>
-    <item msgid="166936313535197598">"自启动以来的总时间"</item>
-    <item msgid="4793941382744963893">"所有时间总计"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"使用时间"</item>
     <item msgid="1908750532762193304">"启动次数"</item>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 99d1f89..c6c4ff6 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"CID"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"卸载 SD 卡"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"格式化 SD 卡"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"卸载 USB 存储设备"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"卸载 SD 卡"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"格式化 USB 存储设备"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"格式化 SD 卡"</string>
     <string name="small_font" msgid="2295331917424072635">"小"</string>
     <string name="medium_font" msgid="2068475425515133701">"中"</string>
     <string name="large_font" msgid="599055175160971446">"大"</string>
     <string name="font_size_save" msgid="3450855718056759095">"确定"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"SD 卡"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB 存储设备"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD 卡"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"电池状态:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"是否已插电:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"电池电量:"</string>
@@ -178,29 +181,36 @@
     <string name="band_mode_failed" msgid="1495968863884716379">"失败"</string>
     <string name="band_mode_succeeded" msgid="2701016190055887575">"成功"</string>
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"重新连接 USB 线后更改生效"</string>
-    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"启用 USB 大容量存储模式"</string>
+    <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"启用 USB 大容量存储设备"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"总字节数:"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"无 SD 卡"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"未装载 USB 存储设备"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"无 SD 卡"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"可用的字节数:"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"SD 卡已被视为大容量存储设备"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"现在可以安全移除 SD 卡"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"SD 卡仍在使用中便被移除!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USB 存储设备已被用作大容量存储设备"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"SD 卡已被视为大容量存储设备"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"现在可以安全移除 USB 存储设备了"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"现在可以安全移除 SD 卡"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"USB 存储设备仍在使用中便被移除!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"SD 卡仍在使用中便被移除!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"已使用的字节数:"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"正从 SD 卡扫描媒体..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"安装的 SD 卡为只读状态"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"正在扫描 USB 存储设备中的媒体..."</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"正从 SD 卡扫描媒体..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"已将 USB 存储设备装载为只读设备"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"安装的 SD 卡为只读状态"</string>
     <string name="next_label" msgid="4693520878012668114">"下一步"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"语言区域"</string>
     <string name="select_your_language" msgid="1146235168951906084">"选择您使用的语言"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"选择活动"</string>
     <string name="device_info_label" msgid="6551553813651711205">"设备信息"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"电池信息"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"电池历史记录"</string>
     <string name="display_label" msgid="7403874003169865762">"显示"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"手机信息"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"SD 卡"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB 存储设备"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SD 卡"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"代理设置"</string>
     <string name="cancel" msgid="6859253417269739139">"取消"</string>
     <string name="settings_label" msgid="1626402585530130914">"设置"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"设置"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"设置"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"飞行模式"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"停用所有无线连接"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"将底座用作免提电话"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"用于音乐和媒体"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"记住设置"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"使用近距离通信读取和交换标签"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"打开 Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Wi-Fi 设置"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"指定何时要从 Wi-Fi 切换到手机数据"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"设置休眠策略时出现问题。"</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MAC 地址"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP 地址"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"IP 设置"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"保存"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"取消"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"状态消息"</string>
     <string name="device_status" msgid="607405385799807324">"状态消息"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"电话号码、信号等"</string>
-    <string name="storage_settings" msgid="6681164315506788024">"SD 卡和手机内存"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"SD 卡和手机内存设置"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"卸载 SD 卡,查看可用存储设备"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"存储"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"存储设置"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"卸载 USB 存储设备,查看可用存储设备"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"卸载 SD 卡,查看可用存储设备"</string>
     <string name="status_number" msgid="5123197324870153205">"本机号码"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"PRL 版本"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"不可用"</string>
     <string name="status_up_time" msgid="7294859476816760399">"开机时间"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"唤醒时间"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"手机内存"</string>
-    <string name="sd_memory" msgid="151871913888051515">"SD 卡"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"内部存储设备"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"USB 存储设备"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"SD 卡"</string>
     <string name="memory_available" msgid="418542433817289474">"可用空间"</string>
     <string name="memory_size" msgid="6629067715017232195">"总容量"</string>
-    <string name="sd_eject" msgid="6915293408836853020">"卸载 SD 卡"</string>
-    <string name="sd_eject_summary" msgid="3315557796211542962">"必须先卸载 SD 卡,才能将其安全移除"</string>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"插入 SD 卡进行安装"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"安装 SD 卡"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"安装 SD 卡"</string>
-    <string name="sd_format" msgid="5448738337382712203">"格式化 SD 卡"</string>
-    <string name="sd_format_summary" msgid="6616491027883134004">"格式化(清除)SD 卡"</string>
+    <string name="sd_eject" product="default" msgid="6915293408836853020">"卸载 SD 卡"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"卸载内部 USB 存储设备"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"需要先卸载 SD 卡,然后才能将其安全移除"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"插入要装载的 USB 存储设备"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"插入 SD 卡进行安装"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"装载共享存储设备"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"安装 SD 卡"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"装载内部 USB 存储设备"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"安装 SD 卡"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"格式化 USB 存储设备"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"格式化 SD 卡"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"清除手机的内部 USB 存储设备中的全部数据,例如音乐和照片"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"清除手机的 SD 卡中的全部数据,例如音乐和照片"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"不可用"</string>
     <string name="read_only" msgid="6702420168629076340">" (只读)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"卸载 SD 卡"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"如果您卸载 SD 卡,则您当前使用的某些应用程序会停止,而且在您重新安装 SD 卡前可能都无法使用。"</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"无法卸载 SD 卡"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"无法卸载 SD 卡,请稍后重试。"</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"系统将要卸载 SD 卡。请在通知区域查看状态。"</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"卸载 USB 存储设备"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"卸载 SD 卡"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"如果您卸载 USB 存储设备,则您当前使用的某些应用程序会停止,而且在您重新装载 USB 存储设备前可能都无法使用。"</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"如果您卸载 SD 卡,则您当前使用的某些应用程序会停止,而且在您重新安装 SD 卡前可能都无法使用。"</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"卸载 USB 存储设备时失败"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"无法卸载 SD 卡"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"无法卸载 USB 存储设备。请稍后再试。"</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"无法卸载 SD 卡,请稍后重试。"</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"系统将会卸载 USB 存储设备。"</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"系统将会卸载 SD 卡。"</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"正在卸载"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"正在卸载"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"电池状态"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"重置默认 APN 设置已完成"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"恢复出厂设置"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"清除手机上的所有数据"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"这会从手机中删除所有数据,包括:"\n<li>"Google 帐户"</li>\n<li>"系统与应用程序的数据和设置"</li>\n<li>"下载的应用程序"</li>\n"不会删除:"\n<li>"当前系统软件和捆绑的应用程序"</li>\n<li>"SD 卡文件,如音乐或照片"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"这会清除您手机的"<b>"内部存储设备"</b>"中的全部数据,包括:"\n\n<li>"您的 Google 帐户"</li>\n<li>"系统和应用程序数据和设置"</li>\n<li>"已下载的应用程序"</li>\n\n"要清除手机中的全部数据,请格式化 "<b>"USB 存储设备"</b>"。"\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"这会清除您手机的"<b>"内部存储设备"</b>"中的全部数据,包括:"\n\n<li>"您的 Google 帐户"</li>\n<li>"系统和应用程序数据和设置"</li>\n<li>"已下载的应用程序"</li>\n\n"要清除音乐、照片和其他用户数据,请格式化 "<b>"SD 卡"</b>"。"\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"格式化 USB 存储设备"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"格式化 SD 卡"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"清除手机的内部 USB 存储设备中的全部数据,例如音乐或照片。"</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"清除手机的 SD 卡中的全部数据,例如音乐或照片。"</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"重置手机"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"是否删除所有个人信息和下载的所有应用程序?此操作无法还原!"</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"清除全部内容"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"绘制您的解锁图案"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"您必须绘制解锁图案才能确认重置手机。"</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"未执行重置,因为系统清除服务不可用。"</string>
-    <string name="media_format_title" msgid="4671276096695789895">"格式化 SD 卡。"</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"清除 SD 卡上的所有数据"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"该操作会清除手机中 SD 卡上的数据。卡上的所有数据都将丢失。"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"格式化 SD 卡"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"确定要将 SD 卡格式化、清除所有媒体吗?该操作将不能撤消!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"格式化 USB 存储设备"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"格式化 SD 卡"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"清除 USB 存储设备中的全部数据"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"清除 SD 卡上的所有数据"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"此操作会格式化 USB 存储设备,会让您丢失其中存储的"<b>"全部"</b>"数据!"</string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"此操作会格式化 SD 卡,会让您丢失其中存储的"<b>"全部"</b>"数据!"</string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"格式化 USB 存储设备"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"格式化 SD 卡"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"确定要格式化 USB 存储设备,删除其中存储的全部文件吗?该操作将无法撤消!"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"确定要格式化 SD 卡,删除其中存储的全部文件吗?该操作将无法撤消!"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"清除全部内容"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"绘制您的解锁图案"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"您必须绘制解锁图案以确认将 SD 卡格式化。"</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"您必须绘制解锁图案,以确认对 USB 存储设备执行格式化操作。"</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"您必须绘制解锁图案,以确认对 SD 卡执行格式化操作。"</string>
     <string name="call_settings_title" msgid="5188713413939232801">"通话设置"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"设置语音信箱、来电转接、来电等待和本机号码显示"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"绑定"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"使用无线网络在应用程序(例如 Google 地图)中查看位置"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"通过 Wi-Fi 和/或移动网络确定的位置"</string>
     <string name="location_gps" msgid="6296125378829097831">"使用 GPS 卫星"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"定位时,精确度设定为街道级别(取消选中可节约电量)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"定位级别可精确到街道"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"定位到街道级别(需要消耗更多电量以及天气允许)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"使用增强型 GPS"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"使用服务器来辅助 GPS(取消选中可降低网络使用率)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"应用程序"</string>
     <string name="data_size_label" msgid="8679376373625710107">"数据"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"卸载"</string>
+    <string name="disable_text" msgid="6544054052049395202">"停用"</string>
+    <string name="enable_text" msgid="9217362512327828987">"启用"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"清除数据"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"卸载更新"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"您已选择在默认情况下对某些操作启动此应用程序。"</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"无默认设置。"</string>
     <string name="clear_activities" msgid="7408923511535174430">"清除默认设置"</string>
     <string name="unknown" msgid="1592123443519355854">"未知"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"排序"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"按姓名排序"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"按大小排序"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"显示当前运行的服务"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"显示缓存进程"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"管理空间"</string>
     <string name="filter" msgid="2018011724373033887">"过滤"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"选择过滤选项"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"全部"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"已下载"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"正在运行"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"SD 卡中"</string>
-    <string name="loading" msgid="3200408047793887917">"正在载入..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"USB 存储设备"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"SD 卡中"</string>
+    <string name="disabled" msgid="9206776641295849915">"已停用"</string>
+    <string name="no_applications" msgid="5190227407135243904">"无应用程序。"</string>
+    <string name="internal_storage" msgid="1584700623164275282">"内部存储设备"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USB 存储设备"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SD 卡存储设备"</string>
     <string name="recompute_size" msgid="7722567982831691718">"正在重新计算大小..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"删除"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"此应用程序的所有数据将被永久删除。删除的内容包括所有文件、设置、帐户、数据库等。"</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"版本 <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"移动"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"移至手机内存"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"移至 SD 卡"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"移至 USB 存储设备"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"移至 SD 卡"</string>
     <string name="moving" msgid="6431016143218876491">"正在移动"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"存储空间不足。"</string>
     <string name="does_not_exist" msgid="837163572898468245">"该应用程序不存在。"</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"指定的安装位置无效。"</string>
     <string name="system_package" msgid="1030561474413022831">"无法在外部媒体上安装系统更新。"</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"强行停止"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"此应用程序将立即重新启动。您确定要强行停止应用程序吗?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"强制关闭应用程序会导致其出现异常,您确定要这么做吗?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"移动应用程序"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"无法移动应用程序。<xliff:g id="REASON">%1$s</xliff:g>"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"首选安装位置"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"更改安装新应用程序时使用的首选安装位置"</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"存储空间使用情况"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"查看应用程序所用的存储空间"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"正在运行的服务"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"查看和控制当前正在运行的服务"</string>
     <string name="service_restarting" msgid="2242747937372354306">"正在重新启动"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"当前未运行任何服务"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"是否停止服务?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"服务只有在重新启动后,才可以继续运行。但这可能会给<xliff:g id="APPLICATION">%1$s</xliff:g>应用程序带来意想不到的结果。"</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"停止"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"取消"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"由应用程序启动:触摸可停止"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>:触摸可进行管理"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"可用:<xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g>,合计 <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"其他:<xliff:g id="MEMORY">%2$s</xliff:g>,合计 <xliff:g id="COUNT">%1$d</xliff:g>"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"进程:<xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"缓存的后台进程"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"当前未运行任何服务。"</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"已由应用程序启动。"</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"可用空间:<xliff:g id="MEMORY">%1$s</xliff:g>"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"已用空间:<xliff:g id="MEMORY">%1$s</xliff:g>"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> 个进程和 <xliff:g id="NUMSERVICES">%2$d</xliff:g> 个服务"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> 个进程和 <xliff:g id="NUMSERVICES">%2$d</xliff:g> 个服务"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> 个进程和 <xliff:g id="NUMSERVICES">%2$d</xliff:g> 个服务"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> 个进程和 <xliff:g id="NUMSERVICES">%2$d</xliff:g> 个服务"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"正在运行的应用程序"</string>
+    <string name="no_services" msgid="7133900764462288263">"无活动服务"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"服务"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"进程"</string>
+    <string name="service_stop" msgid="6369807553277527248">"停止"</string>
+    <string name="service_manage" msgid="1876642087421959194">"设置"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"此服务由其应用程序启动。停止服务可能会导致应用程序失败。"</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"无法安全地停止该应用程序。强行停止可能会导致您目前的部分工作内容丢失。"</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"这是旧应用程序进程,用于保持手机的快速运行,以防随时需要。通常不建议停止。"</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"目前正在使用“<xliff:g id="CLIENT_NAME">%1$s</xliff:g>”。触摸“设置”可以对其进行控制。"</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"正在使用的主要进程。"</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"正在使用服务<xliff:g id="COMP_NAME">%1$s</xliff:g>。"</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"正在使用提供商<xliff:g id="COMP_NAME">%1$s</xliff:g>。"</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"要停止系统服务吗?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"确定要停止此系统服务吗?如果停止,您手机上的某些功能也会立即停止工作,除非您将其关闭后再重新打开。"</string>
     <string name="language_settings" msgid="502219872342167227">"语言和键盘"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"语言和键盘设置"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"设置语言区域(语言和区域)、文字输入和自动更正选项"</string>
-    <string name="language_category" msgid="3391756582724541530">"语言区域设置"</string>
-    <string name="text_category" msgid="6342540511465136739">"文字设置"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"语言设置"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"键盘设置"</string>
     <string name="phone_language" msgid="1165758957501090679">"选择语言"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"自动替换"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"测试"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"手机信息"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"电池信息"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"电池历史记录"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"快速启动"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"设置启动应用程序的键盘快捷键"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"分配应用程序"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"管理文字输入选项"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"<xliff:g id="IME_NAME">%1$s</xliff:g> 设置"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"屏幕键盘设置"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"设备键盘"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"内置键盘设置"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"内置键盘"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"内置物理键盘设置"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"开发"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"设置应用程序开发选项"</string>
     <string name="enable_adb" msgid="7982306934419797485">"USB 调试"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"USB 调试仅用于开发工作。使用该功能可在计算机和移动设备之间复制数据、在移动设备上安装应用程序而不进行通知,以及读取日志数据。"</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"选择小工具"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"选择窗口小部件"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"有关用户 ID <xliff:g id="NUMBER">%d</xliff:g> 的详情"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"用户 ID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"有关<xliff:g id="APP_NAME">%1$s</xliff:g>的网络使用详情:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"收到的字节数:<xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"发送的字节数:<xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"总字节数:<xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"有关<xliff:g id="APP_NAME">%1$s</xliff:g>的 CPU 使用详情:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"用户时间:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"系统时间:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"合计时间:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"启动次数:<xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g> 天 <xliff:g id="HOURS">%2$d</xliff:g> 小时 <xliff:g id="MINUTES">%3$d</xliff:g> 分 <xliff:g id="SECONDS">%4$d</xliff:g> 秒"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g> 小时 <xliff:g id="MINUTES">%2$d</xliff:g> 分 <xliff:g id="SECONDS">%3$d</xliff:g> 秒"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g> 分 <xliff:g id="SECONDS">%2$d</xliff:g> 秒"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g> 秒"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"共享该用户 ID 的数据包:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"没有可用的电池使用数据"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"传感器:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"部分激活锁定:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"包使用的传感器:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"<xliff:g id="PACKAGE">%2$s</xliff:g>使用了 <xliff:g id="COUNT">%1$d</xliff:g> 次"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"由以下某项使用过 <xliff:g id="COUNT">%1$d</xliff:g> 次:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"正在运行"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"屏幕已开启"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"手机已开启"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"除睡眠状态以外的时间"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"屏幕开启所花费的时间:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"手机处于开机状态的时间:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"正在使用电池:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"充电时间:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"使用情况统计数据"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"使用情况统计数据"</string>
     <string name="display_order_text" msgid="8592776965827565271">"排序方式:"</string>
@@ -865,12 +908,19 @@
     <string name="power_usage_summary" msgid="7237084831082848168">"耗电情况"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"拔下电源后的电量消耗情况"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"重置后的电量消耗情况"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"电池仍可持续 <xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"拔下电源后已过 <xliff:g id="TIME">%1$s</xliff:g>"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"正在充电"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"屏幕已开启"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"GPS 已启用"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"唤醒"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"手机信号强度"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
     <string name="awake" msgid="387122265874485088">"设备唤醒时间"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"WiFi 开启时间"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi 开启时间"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"Wi-Fi 开启时间"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"Wi-Fi 开启时间"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"电量使用详情"</string>
     <string name="details_subtitle" msgid="32593908269911734">"详细使用情况"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"手机待机"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"CPU 总使用时间"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPU(前台)"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"保持唤醒状态"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Wi-Fi 正在运行"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"通话"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"数据已发送"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"数据已收到"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"应用程序信息"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"应用程序设置"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"显示设置"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"WiFi 设置"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Wi-Fi 设置"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"蓝牙设置"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"语音通话所耗的电量"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"手机待机时所耗的电量"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"蓝牙所耗的电量"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"请在未使用蓝牙功能时将其关闭"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"正在尝试连接另一蓝牙设备"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"运行应用程序时所耗的电量"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"应用程序所耗的电量"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"停止或卸载应用程序"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"不使用 GPS 时将其关闭"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"手动控制 GPS,以阻止应用程序使用它"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"该应用程序中可能有用于减少耗电量的设置"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"拔下电源后已过 <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"上次拔下电源 <xliff:g id="UNPLUGGED">%1$s</xliff:g> 时"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"未安装"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"女声"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"男声"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"语音合成引擎已安装"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"启用新引擎后才能使用"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"允许应用程序访问安全凭证和其他凭证"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"输入密码"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"输入凭证存储密码。"</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"从 SD 卡安装"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"从 SD 卡安装加密的证书"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"从 USB 存储设备安装"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"从 SD 卡安装"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"从 USB 存储设备安装已加密的证书"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"从 SD 卡安装加密的证书"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"设置密码"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"设置或更改凭证存储密码"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"清除存储"</string>
@@ -1068,6 +1124,16 @@
     <string name="credentials_erased" msgid="7700309135582200849">"该凭证存储已删除。"</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"凭证存储已启用。"</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"凭证存储已停用。"</string>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"加密文件系统"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"加密用户私人数据"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"在此设备中针对用户私人数据启用加密文件系统存储"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"必须清除设备数据才能启用加密文件系统。"</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"必须清除设备数据才能停用加密文件系统。"</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"启用"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"停用"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"取消"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"已取消加密文件系统的模式更改。"</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"加密文件系统警告。"</string>
     <string name="emergency_tone_title" msgid="1055954530111587114">"紧急提示音"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"设置进行紧急呼救时的行为"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"隐私权"</string>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"备份和还原"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"个人数据"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"备份我的数据"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"备份我的设置和其他应用程序数据。"</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"将应用程序数据、Wi-Fi 密码和其他设置备份至 Google 服务器"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"自动还原"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"重新安装某个应用程序后,系统会还原已经备份的设置或其他数据。"</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"重新安装某个应用程序后,系统会还原已经备份的设置或其他数据"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"备份"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"您是否确定要停止备份您的设置和应用程序数据,并清除 Google 服务器上的所有副本?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"确定要停止备份您的 Wi-Fi 密码、书签以及其他设置和应用程序数据,并清除 Google 服务器上的所有副本吗?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"设备管理设置"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"设备管理器"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"取消激活"</string>
diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml
index 0aae95f..0ed49c6 100644
--- a/res/values-zh-rTW/arrays.xml
+++ b/res/values-zh-rTW/arrays.xml
@@ -115,19 +115,6 @@
     <item msgid="1549288661423279207">"插入時絕不"</item>
     <item msgid="1986753720941888596">"永不"</item>
   </string-array>
-  <string-array name="battery_history_type_spinner">
-    <item msgid="2193799199027871385">"CPU 使用率"</item>
-    <item msgid="6401018715947316517">"網路使用率"</item>
-    <item msgid="188092590354892392">"GPS 使用率"</item>
-    <item msgid="8414109131222049141">"感應器使用率"</item>
-    <item msgid="1327904325081257093">"部分喚醒使用率"</item>
-    <item msgid="4832254146664706277">"其他使用率"</item>
-  </string-array>
-  <string-array name="battery_history_which_spinner">
-    <item msgid="3451981114763440074">"自上次拔除插頭後的時間"</item>
-    <item msgid="166936313535197598">"開機後總時間"</item>
-    <item msgid="4793941382744963893">"所有時間的總計"</item>
-  </string-array>
   <string-array name="usage_stats_display_order_types">
     <item msgid="9077371706468756228">"使用時間"</item>
     <item msgid="1908750532762193304">"啟動計數"</item>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 2e593bf..205d45a 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -45,13 +45,16 @@
     <string name="radioInfo_display_asu" msgid="1422248392727818082">"asu"</string>
     <string name="radioInfo_lac" msgid="8415219164758307156">"LAC"</string>
     <string name="radioInfo_cid" msgid="4362599198392643138">"客戶編號"</string>
-    <string name="sdcard_unmount" msgid="3364184561355611897">"卸載 SD 卡"</string>
-    <string name="sdcard_format" msgid="362497552060004057">"將 SD 卡格式化"</string>
+    <string name="sdcard_unmount" product="nosdcard" msgid="6325292633327972272">"無法卸載 USB 儲存裝置"</string>
+    <string name="sdcard_unmount" product="default" msgid="3364184561355611897">"卸載 SD 卡"</string>
+    <string name="sdcard_format" product="nosdcard" msgid="6285310523155166716">"清除 USB 儲存裝置"</string>
+    <string name="sdcard_format" product="default" msgid="6713185532039187532">"清除 SD 卡"</string>
     <string name="small_font" msgid="2295331917424072635">"小"</string>
     <string name="medium_font" msgid="2068475425515133701">"中"</string>
     <string name="large_font" msgid="599055175160971446">"大"</string>
     <string name="font_size_save" msgid="3450855718056759095">"確定"</string>
-    <string name="sdcard_setting" msgid="5922637503871474866">"SD 卡"</string>
+    <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB 儲存裝置"</string>
+    <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD 卡"</string>
     <string name="battery_info_status_label" msgid="8109155295509700309">"電池狀態:"</string>
     <string name="battery_info_power_label" msgid="7465140230991349382">"電源插頭:"</string>
     <string name="battery_info_scale_label" msgid="3649763192389778437">"電池存量:"</string>
@@ -180,27 +183,34 @@
     <string name="sdcard_changes_instructions" msgid="1364712901180556244">"USB 纜線重新連接時,變更才會生效"</string>
     <string name="sdcard_settings_screen_mass_storage_text" msgid="3741220147296482474">"啟用 USB 大量儲存裝置"</string>
     <string name="sdcard_settings_total_bytes_label" msgid="9184160745785062144">"總容量 (bytes):"</string>
-    <string name="sdcard_settings_not_present_status" msgid="6666688653496819947">"沒有 SD 卡"</string>
+    <string name="sdcard_settings_not_present_status" product="nosdcard" msgid="2902787003418172125">"未掛接 USB 儲存裝置"</string>
+    <string name="sdcard_settings_not_present_status" product="default" msgid="6666688653496819947">"沒有 SD 卡"</string>
     <string name="sdcard_settings_available_bytes_label" msgid="763232429899373001">"可用容量 (bytes):"</string>
-    <string name="sdcard_settings_mass_storage_status" msgid="4786433969313661655">"SD 卡已視為 USB 大量儲存裝置"</string>
-    <string name="sdcard_settings_unmounted_status" msgid="3812022095683863087">"您現在可以放心移除 SD 卡"</string>
-    <string name="sdcard_settings_bad_removal_status" msgid="5145797653495907970">"SD 卡仍在使用時便被移除!"</string>
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard" msgid="2736378870889777857">"USB 儲存裝置目前作為大量儲存裝置使用"</string>
+    <string name="sdcard_settings_mass_storage_status" product="default" msgid="4786433969313661655">"SD 卡已視為 USB 大量儲存裝置"</string>
+    <string name="sdcard_settings_unmounted_status" product="nosdcard" msgid="7503300818792750913">"現在可以安全移除 USB 儲存裝置了"</string>
+    <string name="sdcard_settings_unmounted_status" product="default" msgid="3812022095683863087">"您現在可以放心移除 SD 卡"</string>
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard" msgid="7761390725880773697">"USB 儲存裝置在使用期間遭到移除!"</string>
+    <string name="sdcard_settings_bad_removal_status" product="default" msgid="5145797653495907970">"SD 卡仍在使用時便被移除!"</string>
     <string name="sdcard_settings_used_bytes_label" msgid="8820289486001170836">"使用容量 (bytes):"</string>
-    <string name="sdcard_settings_scanning_status" msgid="2763464949274455656">"從 SD 卡掃描媒體中..."</string>
-    <string name="sdcard_settings_read_only_status" msgid="5706115860484118911">"SD 卡為唯讀狀態"</string>
+    <string name="sdcard_settings_scanning_status" product="nosdcard" msgid="7503429447676219564">"正在掃描媒體的 USB 儲存裝置..."</string>
+    <string name="sdcard_settings_scanning_status" product="default" msgid="2763464949274455656">"從 SD 卡掃描媒體中..."</string>
+    <string name="sdcard_settings_read_only_status" product="nosdcard" msgid="3771783090621312312">"以唯讀形式掛接 USB 儲存裝置"</string>
+    <string name="sdcard_settings_read_only_status" product="default" msgid="5706115860484118911">"SD 卡為唯讀狀態"</string>
     <string name="next_label" msgid="4693520878012668114">"下一頁"</string>
     <string name="language_picker_title" msgid="4034157617842965844">"地區設定"</string>
     <string name="select_your_language" msgid="1146235168951906084">"選取語言"</string>
     <string name="activity_picker_label" msgid="4910700713930693329">"選取動作"</string>
     <string name="device_info_label" msgid="6551553813651711205">"裝置資訊"</string>
     <string name="battery_info_label" msgid="4132685016148679403">"電池資訊"</string>
-    <string name="battery_history_label" msgid="8242244969757414501">"電池記錄"</string>
     <string name="display_label" msgid="7403874003169865762">"顯示"</string>
     <string name="phone_info_label" msgid="2127552523124277664">"手機資訊"</string>
-    <string name="sd_card_settings_label" msgid="5743100901106177102">"SD 卡"</string>
+    <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB 儲存裝置"</string>
+    <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SD 卡"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"Proxy 設定"</string>
     <string name="cancel" msgid="6859253417269739139">"取消"</string>
     <string name="settings_label" msgid="1626402585530130914">"設定"</string>
+    <string name="settings_label_launcher" msgid="8344735489639482340">"設定"</string>
     <string name="settings_shortcut" msgid="3672145147925639262">"設定"</string>
     <string name="airplane_mode" msgid="8837269988154128601">"飛航模式"</string>
     <string name="airplane_mode_summary" msgid="3154817401368780988">"停用所有的無線網路連線"</string>
@@ -323,6 +333,11 @@
     <string name="bluetooth_dock_settings_headset" msgid="1001821426078644650">"當成手機喇叭"</string>
     <string name="bluetooth_dock_settings_a2dp" msgid="8791004998846630574">"使用於音樂與媒體"</string>
     <string name="bluetooth_dock_settings_remember" msgid="5551459057010609115">"記住設定"</string>
+    <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
+    <string name="nfc_quick_toggle_summary" msgid="1988408027741447231">"使用近距離無線通訊讀取和交換標記"</string>
+    <!-- no translation found for nfc_toggle_error (2233172102497535522) -->
+    <!-- no translation found for nfc_toggle_error (8998642457947607263) -->
+    <skip />
     <string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"開啟 Wi-Fi"</string>
     <string name="wifi_settings" msgid="4746946030627213196">"Wi-Fi 設定"</string>
@@ -376,6 +391,7 @@
     <string name="wifi_setting_sleep_policy_summary" msgid="7573693311804602041">"指定何時要從 Wi-Fi 切換到行動數據"</string>
     <string name="wifi_setting_sleep_policy_error" msgid="5103670439972135148">"休眠設定時發生問題。"</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MAC 位址"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP 位址"</string>
     <string name="wifi_ip_settings_titlebar" msgid="4345739031248760326">"IP 設定"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"儲存"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"取消"</string>
@@ -496,9 +512,10 @@
     <string name="device_status_activity_title" msgid="1411201799384697904">"狀態"</string>
     <string name="device_status" msgid="607405385799807324">"狀態"</string>
     <string name="device_status_summary" msgid="2599162787451519618">"電話號碼、訊號等。"</string>
-    <string name="storage_settings" msgid="6681164315506788024">"SD 卡和行動電話儲存空間"</string>
-    <string name="storage_settings_title" msgid="5379463509034022773">"SD 卡和行動電話儲存空間設定"</string>
-    <string name="storage_settings_summary" msgid="9176693537325988610">"卸載 SD 卡,檢視可用儲存媒體。"</string>
+    <string name="storage_settings" msgid="4211799979832404953">"儲存空間"</string>
+    <string name="storage_settings_title" msgid="8746016738388094064">"儲存設定"</string>
+    <string name="storage_settings_summary" product="nosdcard" msgid="3543813623294870759">"卸載 USB 儲存裝置,瀏覽可用的儲存裝置"</string>
+    <string name="storage_settings_summary" product="default" msgid="9176693537325988610">"卸載 SD 卡,檢視可用儲存媒體。"</string>
     <string name="status_number" msgid="5123197324870153205">"我的電話號碼"</string>
     <string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
     <string name="status_prl_version" msgid="8499039751817386529">"PRL 版本"</string>
@@ -514,24 +531,36 @@
     <string name="status_unavailable" msgid="7862009036663793314">"無法取得"</string>
     <string name="status_up_time" msgid="7294859476816760399">"開機時間"</string>
     <string name="status_awake_time" msgid="2393949909051183652">"清醒時間"</string>
-    <string name="internal_memory" msgid="1130932766236387454">"手機內部記憶體"</string>
-    <string name="sd_memory" msgid="151871913888051515">"SD 卡"</string>
+    <string name="internal_memory" msgid="9129595691484260784">"內存空間"</string>
+    <string name="sd_memory" product="nosdcard" msgid="2510246194083052841">"USB 儲存裝置"</string>
+    <string name="sd_memory" product="default" msgid="151871913888051515">"SD 卡"</string>
     <string name="memory_available" msgid="418542433817289474">"可用空間"</string>
     <string name="memory_size" msgid="6629067715017232195">"總空間"</string>
-    <string name="sd_eject" msgid="6915293408836853020">"卸載 SD 卡"</string>
-    <string name="sd_eject_summary" msgid="3315557796211542962">"必須先卸載 SD 卡,才能安全移除"</string>
-    <string name="sd_insert_summary" msgid="2048640010381803841">"插入要掛載的 SD 卡"</string>
-    <string name="sd_mount" msgid="5940523765187704135">"掛載 SD 卡"</string>
-    <string name="sd_mount_summary" msgid="4936591681679097699">"掛載 SD 卡"</string>
-    <string name="sd_format" msgid="5448738337382712203">"將 SD 卡格式化"</string>
-    <string name="sd_format_summary" msgid="6616491027883134004">"將 SD 卡格式化 (清除)"</string>
+    <string name="sd_eject" product="default" msgid="6915293408836853020">"卸載 SD 卡"</string>
+    <string name="sd_eject_summary" product="nosdcard" msgid="5009296896648072891">"卸載內部 USB 儲存裝置"</string>
+    <string name="sd_eject_summary" product="default" msgid="3300599435073550246">"請先卸載 SD 卡,才能將其安全移除"</string>
+    <string name="sd_insert_summary" product="nosdcard" msgid="5264016886409577313">"插入用於掛接的 USB 儲存裝置"</string>
+    <string name="sd_insert_summary" product="default" msgid="2048640010381803841">"插入要掛載的 SD 卡"</string>
+    <!-- outdated translation 2160896630836199702 -->     <string name="sd_mount" product="nosdcard" msgid="8966695015677343116">"掛接共用儲存裝置"</string>
+    <string name="sd_mount" product="default" msgid="5940523765187704135">"掛載 SD 卡"</string>
+    <!-- outdated translation 6733254203291665551 -->     <string name="sd_mount_summary" product="nosdcard" msgid="1794150364965145726">"掛接內部 USB 儲存裝置"</string>
+    <string name="sd_mount_summary" product="default" msgid="4936591681679097699">"掛載 SD 卡"</string>
+    <string name="sd_format" product="nosdcard" msgid="2148179271623099054">"清除 USB 儲存裝置"</string>
+    <string name="sd_format" product="default" msgid="2576054280507119870">"清除 SD 卡"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="1504606546865152514">"清除手機內部 USB 儲存裝置的所有資料,例如音樂和相片。"</string>
+    <string name="sd_format_summary" product="default" msgid="915849621390821841">"清除手機 SD 卡中的所有資料,例如音樂和相片"</string>
     <string name="sd_unavailable" msgid="8580107589533213904">"無法取得資訊"</string>
     <string name="read_only" msgid="6702420168629076340">" (唯讀)"</string>
-    <string name="dlg_confirm_unmount_title" msgid="8612140627310646730">"卸載 SD 卡"</string>
-    <string name="dlg_confirm_unmount_text" msgid="5851214273718817727">"如果您將 SD 卡退出,則您正在使用的某些應用程式會停止運作,而且可能無法使用,待您將 SD 卡重新插入才會恢復正常。"</string>
-    <string name="dlg_error_unmount_title" msgid="4004106918266783081">"無法退出 SD 卡"</string>
-    <string name="dlg_error_unmount_text" msgid="9188972789897713180">"無法退出 SD 卡。請稍後再試一次。"</string>
-    <string name="unmount_inform_text" msgid="3213378327712151498">"即將退出 SD 卡。請檢查通知區域,瞭解狀態。"</string>
+    <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="2349876662428231297">"無法卸載 USB 儲存裝置"</string>
+    <string name="dlg_confirm_unmount_title" product="default" msgid="8612140627310646730">"卸載 SD 卡"</string>
+    <string name="dlg_confirm_unmount_text" product="nosdcard" msgid="3390169455621185223">"如果您卸載 USB 儲存裝置,則某些正在使用中的應用程式會停止運作,而且可能無法使用,直到重新掛接 USB 儲存裝置之後才會恢復正常。"</string>
+    <string name="dlg_confirm_unmount_text" product="default" msgid="5851214273718817727">"如果您將 SD 卡退出,則您正在使用的某些應用程式會停止運作,而且可能無法使用,待您將 SD 卡重新插入才會恢復正常。"</string>
+    <string name="dlg_error_unmount_title" product="nosdcard" msgid="7695491947411836733">"卸載 USB 儲存裝置失敗"</string>
+    <string name="dlg_error_unmount_title" product="default" msgid="4004106918266783081">"無法退出 SD 卡"</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="1450864147013376592">"無法卸載 USB 儲存裝置,請稍候再試。"</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="9188972789897713180">"無法退出 SD 卡。請稍後再試一次。"</string>
+    <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"即將卸載 USB 儲存裝置。"</string>
+    <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"即將卸載 SD 卡。"</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"正在取出"</string>
     <string name="sd_ejecting_summary" msgid="2028753069184908491">"正在取出"</string>
     <string name="battery_status_title" msgid="9159414319574976203">"電池狀態"</string>
@@ -571,21 +600,32 @@
     <string name="restore_default_apn_completed" msgid="3990449939234957281">"重設預設 APN 設定已完成"</string>
     <string name="master_clear_title" msgid="5907939616087039756">"重設為原廠設定"</string>
     <string name="master_clear_summary" msgid="4986154238001088492">"清除手機上所有資料"</string>
-    <string name="master_clear_desc" msgid="7823268823499739178">"這將清除您手機中的下列資料:"\n<li>"您的 Google 帳戶"</li>\n<li>"系統與應用程式的資料和設定"</li>\n<li>"已下載的應用程式"</li>\n"不會清除下列資料:"\n<li>"目前的系統軟體和附屬應用程式"</li>\n<li>"SD 卡中的檔案,例如音樂或相片"</li></string>
+    <string name="master_clear_desc" product="nosdcard" msgid="2163013814299528247">"這會清除您手機"<b>"內存空間"</b>"中的所有資料,包括:"\n\n<li>"您的 Google 帳戶"</li>\n<li>"系統和應用程式資料及設定"</li>\n<li>"已下載的應用程式"</li>\n\n"如要清除手機上的所有資料,則需清除 "<b>"USB 儲存裝置"</b>"。"\n\n</string>
+    <string name="master_clear_desc" product="default" msgid="1741944496458365969">"這會清除您手機"<b>"內存空間"</b>"中的所有資料,包括:"\n\n<li>"您的 Google 帳戶"</li>\n<li>"系統和應用程式資料及設定"</li>\n<li>"已下載的應用程式"</li>\n\n"如要一併清除音樂、相片及其他資料,則需清除 "<b>"SD 卡"</b>"。"\n\n</string>
+    <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"清除 USB 儲存裝置"</string>
+    <string name="erase_external_storage" product="default" msgid="1397239046334307625">"清除 SD 卡"</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="1657838142707381027">"清除手機內部 USB 儲存裝置的所有資料,例如音樂或相片。"</string>
+    <string name="erase_external_storage_description" product="default" msgid="8100175974635894073">"清除手機 SD 卡上的所有資料,例如音樂或相片。"</string>
     <string name="master_clear_button_text" msgid="7550632653343157971">"重設手機"</string>
     <string name="master_clear_final_desc" msgid="6917971132484622696">"要清除所有個人資料及先前下載的應用程式嗎?這個動作無法復原!"</string>
     <string name="master_clear_final_button_text" msgid="5390908019019242910">"清除全部"</string>
     <string name="master_clear_gesture_prompt" msgid="1428645764883536750">"畫出解鎖圖形"</string>
     <string name="master_clear_gesture_explanation" msgid="8901714274312707918">"請畫出解鎖圖形,以確認重設手機。"</string>
     <string name="master_clear_failed" msgid="8655202125010189406">"因「系統清除」服務異常,未成功執行重設。"</string>
-    <string name="media_format_title" msgid="4671276096695789895">"將 SD 卡格式化。"</string>
-    <string name="media_format_summary" msgid="3805714639375830120">"清除 SD 卡上的所有資料"</string>
-    <string name="media_format_desc" msgid="1142563222357820834">"此項操作將清除手機中 SD 卡上的資料。SD 卡上的全部資料將會消失!"</string>
-    <string name="media_format_button_text" msgid="370856400090190151">"將 SD 卡格式化"</string>
-    <string name="media_format_final_desc" msgid="1776666694910717198">"確定要將 SD 卡格式化、清除所有媒體嗎?此項操作將無法復原!"</string>
+    <string name="media_format_title" product="nosdcard" msgid="3999653431422767156">"清除 USB 儲存裝置"</string>
+    <string name="media_format_title" product="default" msgid="4427528440306787972">"清除 SD 卡"</string>
+    <string name="media_format_summary" product="nosdcard" msgid="776603298628082065">"清除 USB 儲存裝置中的所有資料"</string>
+    <string name="media_format_summary" product="default" msgid="3805714639375830120">"清除 SD 卡上的所有資料"</string>
+    <string name="media_format_desc" product="nosdcard" msgid="4553860683952763905">"這項動作會清除 USB 儲存裝置,您將失去其中儲存的「所有」資料!"<b></b></string>
+    <string name="media_format_desc" product="default" msgid="1598627584181935513">"這項動作會清除 SD 卡,您將失去 SD 卡中的「所有」資料!"<b></b></string>
+    <string name="media_format_button_text" product="nosdcard" msgid="6293669371185352810">"清除 USB 儲存裝置"</string>
+    <string name="media_format_button_text" product="default" msgid="6721544380069373626">"清除 SD 卡"</string>
+    <string name="media_format_final_desc" product="nosdcard" msgid="8094635533378487255">"清除 USB 儲存裝置時,是否一併刪除所有儲存的檔案?這項動作無法復原!"</string>
+    <string name="media_format_final_desc" product="default" msgid="9015504991522581434">"清除 SD 卡時,是否刪除其中儲存的所有檔案?這項動作無法復原!"</string>
     <string name="media_format_final_button_text" msgid="4881713344315923175">"全部清除"</string>
     <string name="media_format_gesture_prompt" msgid="3109349468816856670">"畫出解鎖圖形"</string>
-    <string name="media_format_gesture_explanation" msgid="4239529439389660159">"您必須畫出解鎖圖形,以確認將 SD 卡格式化。"</string>
+    <string name="media_format_gesture_explanation" product="nosdcard" msgid="1379736318750958338">"您必須繪製解鎖圖形,以確認要清除 USB 儲存裝置。"</string>
+    <string name="media_format_gesture_explanation" product="default" msgid="1681213416497647321">"您必須繪製解鎖圖形,以確認要清除 SD 卡。"</string>
     <string name="call_settings_title" msgid="5188713413939232801">"通話設定"</string>
     <string name="call_settings_summary" msgid="7291195704801002886">"設定語音信箱、來電轉接、來電待接及本機號碼顯示"</string>
     <string name="tether_settings_title_usb" msgid="4315031513434087777">"數據連線"</string>
@@ -598,7 +638,7 @@
     <string name="usb_tethering_button_text" msgid="585829947108007917">"USB 數據連線"</string>
     <string name="usb_tethering_available_subtext" msgid="156779271296152605">"已連接 USB,選取即可進行數據連線"</string>
     <string name="usb_tethering_active_subtext" msgid="8916210851136467042">"數據已連線"</string>
-    <string name="usb_tethering_storage_active_subtext" msgid="6608933594288072573">"使用 USB 儲存空間時無法進行數據連線"</string>
+    <string name="usb_tethering_storage_active_subtext" msgid="6608933594288072573">"使用 USB 儲存裝置時無法進行數據連線"</string>
     <string name="usb_tethering_unavailable_subtext" msgid="1044622421184007254">"USB 尚未連線"</string>
     <string name="usb_tethering_errored_subtext" msgid="1377574819427841992">"USB 數據連線發生錯誤"</string>
     <string name="tethering_help_button_text" msgid="656117495547173630">"說明"</string>
@@ -609,7 +649,7 @@
     <string name="location_networks_disabled" msgid="2708968452901433980">"使用無線網路,在應用程式中查詢位置 (例如 Google 地圖)"</string>
     <string name="location_neighborhood_level" msgid="4656658097932515921">"根據 Wi-Fi 和/或行動網路判定位置"</string>
     <string name="location_gps" msgid="6296125378829097831">"使用 GPS 衛星定位"</string>
-    <string name="location_street_level" msgid="6460740847018275745">"定位時,精準度設定為街道等級 (取消勾選即可節省電力)"</string>
+    <string name="location_street_level" msgid="7456259025474443314">"定位時,將精準度設定為街道等級"</string>
     <string name="location_gps_disabled" msgid="6632537158777308128">"定位至街道等級 (需要更多電力及天候允許)"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"使用輔助 GPS"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"使用伺服器輔助 GPS (取消勾選即可降低網路使用量)"</string>
@@ -692,22 +732,31 @@
     <string name="application_size_label" msgid="5055196275624686382">"應用程式"</string>
     <string name="data_size_label" msgid="8679376373625710107">"資料"</string>
     <string name="uninstall_text" msgid="3644892466144802466">"解除安裝"</string>
+    <string name="disable_text" msgid="6544054052049395202">"停用"</string>
+    <string name="enable_text" msgid="9217362512327828987">"啟用"</string>
     <string name="clear_user_data_text" msgid="5597622864770098388">"清除資料"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"解除安裝更新"</string>
     <string name="auto_launch_enable_text" msgid="2630656657744196691">"您已設定在某些操作下啟動此應用程式。"</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"沒有預設值。"</string>
     <string name="clear_activities" msgid="7408923511535174430">"清除預設值"</string>
     <string name="unknown" msgid="1592123443519355854">"不明"</string>
-    <string name="sort_order_alpha" msgid="8622029358896599842">"排序"</string>
+    <string name="sort_order_alpha" msgid="1410278099123670628">"按名稱排序"</string>
     <string name="sort_order_size" msgid="7024513286636502362">"依大小排序"</string>
+    <string name="show_running_services" msgid="5736278767975544570">"顯示執行中的服務"</string>
+    <string name="show_background_processes" msgid="2009840211972293429">"顯示快取處理程序"</string>
     <string name="manage_space_text" msgid="8852711522447794676">"管理空間"</string>
     <string name="filter" msgid="2018011724373033887">"篩選"</string>
     <string name="filter_dlg_title" msgid="6507663329723966854">"選取篩選選項"</string>
     <string name="filter_apps_all" msgid="5142129378749391876">"全部"</string>
     <string name="filter_apps_third_party" msgid="7786348047690140979">"已下載"</string>
     <string name="filter_apps_running" msgid="7767071454371350486">"執行中"</string>
-    <string name="filter_apps_onsdcard" msgid="1477351142334784771">"於 SD 卡"</string>
-    <string name="loading" msgid="3200408047793887917">"載入中..."</string>
+    <string name="filter_apps_onsdcard" product="nosdcard" msgid="4843063154701023349">"USB 儲存裝置"</string>
+    <string name="filter_apps_onsdcard" product="default" msgid="1477351142334784771">"於 SD 卡"</string>
+    <string name="disabled" msgid="9206776641295849915">"已停用"</string>
+    <string name="no_applications" msgid="5190227407135243904">"沒有應用程式。"</string>
+    <string name="internal_storage" msgid="1584700623164275282">"內存空間"</string>
+    <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USB 儲存裝置"</string>
+    <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SD 卡儲存裝置"</string>
     <string name="recompute_size" msgid="7722567982831691718">"重新計算大小..."</string>
     <string name="clear_data_dlg_title" msgid="4470209520936375508">"刪除"</string>
     <string name="clear_data_dlg_text" msgid="8368035073300828451">"該應用程式的所有資料都將遭到永遠刪除,包含所有檔案、設定、帳戶、資料庫等等。"</string>
@@ -727,7 +776,8 @@
     <string name="version_text" msgid="9189073826278676425">"版本 <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="move_app" msgid="5042838441401731346">"移動"</string>
     <string name="move_app_to_internal" msgid="3895430471913858185">"移至手機"</string>
-    <string name="move_app_to_sdcard" msgid="1143379049903056407">"移至 SD 卡"</string>
+    <string name="move_app_to_sdcard" product="nosdcard" msgid="4350451696315265420">"移至 USB 儲存裝置"</string>
+    <string name="move_app_to_sdcard" product="default" msgid="1143379049903056407">"移至 SD 卡"</string>
     <string name="moving" msgid="6431016143218876491">"正在移動"</string>
     <string name="insufficient_storage" msgid="8566913062094452962">"剩餘的儲存空間不足。"</string>
     <string name="does_not_exist" msgid="837163572898468245">"應用程式不存在。"</string>
@@ -735,29 +785,49 @@
     <string name="invalid_location" msgid="4934491353200240499">"所指定的安裝位置無效。"</string>
     <string name="system_package" msgid="1030561474413022831">"無法將系統更新安裝在外部媒體上。"</string>
     <string name="force_stop_dlg_title" msgid="4289453224368188476">"強制停止"</string>
-    <string name="force_stop_dlg_text" msgid="3381302041569982075">"此應用程式即將重新啟動,確定要強制停止嗎?"</string>
+    <string name="force_stop_dlg_text" msgid="5157374701213502922">"強制關閉應用程式可能會使得應用程式的運作不正常,您確定要執行嗎?"</string>
     <string name="move_app_failed_dlg_title" msgid="4337731903265156405">"移動應用程式"</string>
     <string name="move_app_failed_dlg_text" msgid="8824246817947643697">"因為 <xliff:g id="REASON">%1$s</xliff:g>,無法移動應用程式。"</string>
     <string name="app_install_location_title" msgid="2068975150026852168">"偏好的安裝位置"</string>
     <string name="app_install_location_summary" msgid="879753854530300436">"變更新應用程式在安裝時的偏好位置。"</string>
+    <string name="storageuse_settings_title" msgid="5657014373502630403">"儲存空間使用量"</string>
+    <string name="storageuse_settings_summary" msgid="2556057379120846792">"查看應用程式所使用的儲存空間"</string>
     <string name="runningservices_settings_title" msgid="8097287939865165213">"正在運作的服務"</string>
     <string name="runningservices_settings_summary" msgid="854608995821032748">"查看並控制目前正在運作的服務"</string>
     <string name="service_restarting" msgid="2242747937372354306">"重新啟動中"</string>
-    <string name="no_running_services" msgid="6981216347270280598">"沒有正在運作的服務"</string>
-    <string name="confirm_stop_service" msgid="5700448757318301681">"要停止服務嗎?"</string>
-    <string name="confirm_stop_service_msg" msgid="1166661293369421272">"服務將不再繼續執行,除非您重新啟動該服務。這個動作可能會對應用程式「<xliff:g id="APPLICATION">%1$s</xliff:g>」造成無法預期的結果。"</string>
-    <string name="confirm_stop_stop" msgid="7382363913280993331">"停止"</string>
-    <string name="confirm_stop_cancel" msgid="206495326622692381">"取消"</string>
-    <string name="service_started_by_app" msgid="8432097226392386802">"由應用程式啟動:輕觸螢幕即可停止"</string>
-    <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>:輕觸即可進行管理"</string>
-    <string name="service_background_processes" msgid="5158600475629177758">"可用:<xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g>,共 <xliff:g id="COUNT">%1$d</xliff:g> 個程序"</string>
-    <string name="service_foreground_processes" msgid="4013890350284680796">"其他:<xliff:g id="MEMORY">%2$s</xliff:g>,共 <xliff:g id="COUNT">%1$d</xliff:g> 個程序"</string>
-    <string name="service_process_name" msgid="8630408984456958400">"程序:<xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+    <string name="cached" msgid="1059590879740175019">"快取背景處理程序"</string>
+    <string name="no_running_services" msgid="2059536495597645347">"沒有正在執行中的服務。"</string>
+    <string name="service_started_by_app" msgid="6575184738671598131">"由應用程式啟動。"</string>
+    <!-- no translation found for service_client_name (4037193625611815517) -->
+    <skip />
+    <string name="service_background_processes" msgid="6844156253576174488">"<xliff:g id="MEMORY">%1$s</xliff:g> 可用"</string>
+    <string name="service_foreground_processes" msgid="7583975676795574276">"<xliff:g id="MEMORY">%1$s</xliff:g> 已使用"</string>
+    <string name="memory" msgid="6609961111091483458">"RAM"</string>
+    <!-- no translation found for service_process_name (4098932168654826656) -->
+    <skip />
+    <string name="running_processes_item_description_s_s" msgid="5790575965282023145">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> 項處理程序和 <xliff:g id="NUMSERVICES">%2$d</xliff:g> 項服務"</string>
+    <string name="running_processes_item_description_s_p" msgid="8019860457123222953">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> 項處理程序和 <xliff:g id="NUMSERVICES">%2$d</xliff:g> 項服務"</string>
+    <string name="running_processes_item_description_p_s" msgid="744424668287252915">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> 項處理程序和 <xliff:g id="NUMSERVICES">%2$d</xliff:g> 項服務"</string>
+    <string name="running_processes_item_description_p_p" msgid="1607384595790852782">"<xliff:g id="NUMPROCESS">%1$d</xliff:g> 項處理程序和 <xliff:g id="NUMSERVICES">%2$d</xliff:g> 項服務"</string>
+    <string name="runningservicedetails_settings_title" msgid="6188692418986988288">"正在執行的應用程式"</string>
+    <string name="no_services" msgid="7133900764462288263">"尚未啟用"</string>
+    <string name="runningservicedetails_services_title" msgid="391168243725357375">"服務"</string>
+    <string name="runningservicedetails_processes_title" msgid="928115582044655268">"處理程序"</string>
+    <string name="service_stop" msgid="6369807553277527248">"停止"</string>
+    <string name="service_manage" msgid="1876642087421959194">"設定"</string>
+    <string name="service_stop_description" msgid="3261798282116866961">"這項服務是由其所屬應用程式啟動。停止服務可能會造成應用程式執行失敗。"</string>
+    <string name="heavy_weight_stop_description" msgid="6855241582643136019">"無法安全停止這個應用程式。強制停止可能造成目前的作業喪失一部分。"</string>
+    <string name="background_process_stop_description" msgid="1728354083304746737">"保留這項舊有的應用程式處理程序是為了加快處理速度,以免日後需要再次使用,通常不會無故停止這項處理程序。"</string>
+    <string name="service_manage_description" msgid="7050092269951613102">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>:目前在使用中。請輕觸 [設定] 管理此用戶端。"</string>
+    <string name="main_running_process_description" msgid="929204645380391397">"使用中的主要處理程序。"</string>
+    <string name="process_service_in_use_description" msgid="8993335064403217080">"服務 <xliff:g id="COMP_NAME">%1$s</xliff:g> 正在使用中。"</string>
+    <string name="process_provider_in_use_description" msgid="5586603325677678940">"供應商 <xliff:g id="COMP_NAME">%1$s</xliff:g> 正在使用中。"</string>
+    <string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"停止系統服務?"</string>
+    <string name="runningservicedetails_stop_dlg_text" msgid="6929716497425738387">"您確定要停止這項系統服務嗎?如果停止的話,您的某些手機功能可能會停止正常運作,待您重新開機後才會恢復正常。"</string>
     <string name="language_settings" msgid="502219872342167227">"語言與鍵盤"</string>
     <string name="language_keyboard_settings_title" msgid="3455826933385341107">"語言與鍵盤設定"</string>
-    <string name="language_settings_summary" msgid="595647729475399987">"選取地區設定 (語言和地區)、文字輸入和自動校正選項"</string>
-    <string name="language_category" msgid="3391756582724541530">"地區設定"</string>
-    <string name="text_category" msgid="6342540511465136739">"文字設定"</string>
+    <string name="language_settings_category" msgid="2288258489940617043">"語言設定"</string>
+    <string name="keyboard_settings_category" msgid="7060453865544070642">"鍵盤設定"</string>
     <string name="phone_language" msgid="1165758957501090679">"選取語言"</string>
     <string name="phone_language_summary" msgid="3871309445655554211"></string>
     <string name="auto_replace" msgid="6199184757891937822">"自動替換"</string>
@@ -782,7 +852,6 @@
     <string name="testing" msgid="6584352735303604146">"測試中"</string>
     <string name="testing_phone_info" msgid="8656693364332840056">"手機資訊"</string>
     <string name="testing_battery_info" msgid="3497865525976497848">"電池資訊"</string>
-    <string name="testing_battery_history" msgid="3043329445810695647">"電池記錄"</string>
     <string name="quick_launch_title" msgid="7904609846945905306">"快速啟動"</string>
     <string name="quick_launch_summary" msgid="3453825712466417452">"設定啟動應用程式的鍵盤快速鍵"</string>
     <string name="quick_launch_assign_application" msgid="4521368464929956350">"指派應用程式"</string>
@@ -798,8 +867,8 @@
     <string name="input_methods_settings_summary" msgid="7571173442946675205">"管理輸入法選項"</string>
     <string name="input_methods_settings_label_format" msgid="6002887604815693322">"<xliff:g id="IME_NAME">%1$s</xliff:g> 設定"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"螢幕鍵盤設定"</string>
-    <string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"裝置小鍵盤"</string>
-    <string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"內建小鍵盤設定"</string>
+    <string name="builtin_keyboard_settings_title" msgid="5274990495405941804">"內建鍵盤"</string>
+    <string name="builtin_keyboard_settings_summary" msgid="7990296351888096836">"內建實體鍵盤設定"</string>
     <string name="development_settings_title" msgid="6719732334835420989">"開發"</string>
     <string name="development_settings_summary" msgid="2151320488701538355">"設定應用程式開發選項"</string>
     <string name="enable_adb" msgid="7982306934419797485">"USB 偵錯"</string>
@@ -812,36 +881,10 @@
     <string name="adb_warning_message" msgid="5352555112049663033">"USB 偵錯是針對應用程式開發而設計的功能,可讓您在電腦與裝置間複製資料、不用通知即可在裝置上安裝應用程式,以及讀取記錄資料。"</string>
     <string name="gadget_picker_title" msgid="98374951396755811">"選擇小工具"</string>
     <string name="widget_picker_title" msgid="9130684134213467557">"選擇小工具"</string>
-    <string name="battery_history_details_for" msgid="5924639922153109669">"UID <xliff:g id="NUMBER">%d</xliff:g> 的詳細資料"</string>
-    <string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
-    <string name="battery_history_network_usage" msgid="8010852371665217020">"<xliff:g id="APP_NAME">%1$s</xliff:g> 的網路使用率詳細資料:"</string>
-    <string name="battery_history_bytes_received" msgid="980307569180518302">"已接收的位元組數:<xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_sent" msgid="2501748768602119159">"已傳送的位元組數:<xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_bytes_total" msgid="4444807574361642753">"總容量 (bytes):<xliff:g id="BYTES">%1$d</xliff:g>"</string>
-    <string name="battery_history_cpu_usage" msgid="2597353713014790877">"<xliff:g id="APP_NAME">%1$s</xliff:g> 的 CPU 使用率詳細資料:"</string>
-    <string name="battery_history_user_time" msgid="6227507614894791359">"使用者時間:"</string>
-    <string name="battery_history_system_time" msgid="2015862072724507547">"系統時間:"</string>
-    <string name="battery_history_total_time" msgid="3618703970098556104">"總計時間:"</string>
-    <string name="battery_history_starts" msgid="9137453931978571696">"啟動次數:<xliff:g id="STARTS">%1$d</xliff:g>"</string>
     <string name="battery_history_days" msgid="7110262897769622564">"<xliff:g id="DAYS">%1$d</xliff:g> 天 <xliff:g id="HOURS">%2$d</xliff:g> 小時 <xliff:g id="MINUTES">%3$d</xliff:g> 分 <xliff:g id="SECONDS">%4$d</xliff:g> 秒"</string>
     <string name="battery_history_hours" msgid="7525170329826274999">"<xliff:g id="HOURS">%1$d</xliff:g> 小時 <xliff:g id="MINUTES">%2$d</xliff:g> 分 <xliff:g id="SECONDS">%3$d</xliff:g> 秒"</string>
     <string name="battery_history_minutes" msgid="1467775596084148610">"<xliff:g id="MINUTES">%1$d</xliff:g> 分 <xliff:g id="SECONDS">%2$d</xliff:g> 秒"</string>
     <string name="battery_history_seconds" msgid="4283492130945761685">"<xliff:g id="SECONDS">%1$d</xliff:g> 秒"</string>
-    <string name="battery_history_packages_sharing_this_uid" msgid="4101596071379250050">"共用此 UID 的封裝:"</string>
-    <string name="battery_history_no_data" msgid="1177238743237067617">"沒有電池使用資料"</string>
-    <string name="battery_history_sensor" msgid="2333488996028993982">"感應器:"</string>
-    <string name="battery_history_wakelock" msgid="608683447522396293">"部分喚醒鎖定:"</string>
-    <string name="battery_history_used_by_packages" msgid="3000711380023436470">"程式使用的感應器:"</string>
-    <string name="battery_history_sensor_usage" msgid="3593133338613209024">"使用次數:<xliff:g id="COUNT">%1$d</xliff:g>,使用的封裝:<xliff:g id="PACKAGE">%2$s</xliff:g>"</string>
-    <string name="battery_history_sensor_usage_multi" msgid="4536084375991014508">"使用次數:<xliff:g id="COUNT">%1$d</xliff:g>,使用者為下列其中之一:"</string>
-    <string name="battery_history_awake_label" msgid="8449792868990080882">"執行"</string>
-    <string name="battery_history_screen_on_label" msgid="1848936521786339362">"螢幕開啟"</string>
-    <string name="battery_history_phone_on_label" msgid="700191958853142297">"開機"</string>
-    <string name="battery_history_awake" msgid="4350886665719031057">"未休眠的時間:"</string>
-    <string name="battery_history_screen_on" msgid="1377240025275657277">"螢幕開啟時間:"</string>
-    <string name="battery_history_phone_on" msgid="4891504401623839532">"手機處於開啟狀態的時間:"</string>
-    <string name="battery_history_screen_on_battery" msgid="536058210445081888">"使用電池:"</string>
-    <string name="battery_history_screen_on_plugged" msgid="5019127390021871260">"插入時間:"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"使用統計資料"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"使用統計資料"</string>
     <string name="display_order_text" msgid="8592776965827565271">"排序依據:"</string>
@@ -865,12 +908,19 @@
     <string name="power_usage_summary" msgid="7237084831082848168">"查看正在消耗電力的功能"</string>
     <string name="battery_since_unplugged" msgid="338073389740738437">"拔除插頭後的電池使用狀況"</string>
     <string name="battery_since_reset" msgid="7464546661121187045">"重設後的電池使用狀況"</string>
+    <string name="battery_stats_on_battery" msgid="4970762168505236033">"電池電力剩餘時間:<xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="battery_stats_duration" msgid="7464501326709469282">"拔除插頭後已過了 <xliff:g id="TIME">%1$s</xliff:g>"</string>
+    <string name="battery_stats_charging_label" msgid="4223311142875178785">"充電"</string>
+    <string name="battery_stats_screen_on_label" msgid="7150221809877509708">"螢幕已開"</string>
+    <string name="battery_stats_gps_on_label" msgid="1193657533641951256">"開啟 GPS"</string>
+    <string name="battery_stats_wifi_running_label" msgid="3093545080361658269">"Wi-Fi"</string>
+    <string name="battery_stats_wake_lock_label" msgid="1908942681902324095">"清醒"</string>
+    <string name="battery_stats_phone_signal_label" msgid="6822042940376636775">"手機訊號"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
-    <string name="awake" msgid="387122265874485088">"裝置甦醒時間"</string>
-    <string name="wifi_on_time" msgid="4630925382578609056">"WiFi 開啟時間"</string>
-    <string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi 開啟時間"</string>
+    <string name="awake" msgid="387122265874485088">"裝置清醒時間"</string>
+    <string name="wifi_on_time" msgid="6310209835617490616">"開啟 Wi-Fi 的時間"</string>
+    <string name="bluetooth_on_time" msgid="6157799524996162271">"開啟 Wi-Fi 的時間"</string>
     <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> -  <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="details_title" msgid="7564809986329021063">"電池使用狀況詳細資料"</string>
     <string name="details_subtitle" msgid="32593908269911734">"使用狀況詳細資訊"</string>
@@ -884,7 +934,9 @@
     <string name="power_idle" msgid="9055659695602194990">"手機閒置"</string>
     <string name="usage_type_cpu" msgid="715162150698338714">"CPU 總使用時間"</string>
     <string name="usage_type_cpu_foreground" msgid="6500579611933211831">"CPU 前端使用狀況"</string>
+    <string name="usage_type_wake_lock" msgid="5125438890233677880">"保持清醒"</string>
     <string name="usage_type_gps" msgid="7989688715128160790">"GPS"</string>
+    <string name="usage_type_wifi_running" msgid="8234997940652067049">"Wi-Fi 執行中"</string>
     <string name="usage_type_phone" msgid="9108247984998041853">"手機"</string>
     <string name="usage_type_data_send" msgid="2857401966985425427">"已傳送資料"</string>
     <string name="usage_type_data_recv" msgid="7251090882025234185">"已接收資料"</string>
@@ -896,7 +948,7 @@
     <string name="battery_action_app_details" msgid="3275013531871113681">"應用程式資訊"</string>
     <string name="battery_action_app_settings" msgid="350562653472577250">"應用程式設定"</string>
     <string name="battery_action_display" msgid="5302763261448580102">"顯示設定"</string>
-    <string name="battery_action_wifi" msgid="5452076674659927993">"WiFi 設定"</string>
+    <string name="battery_action_wifi" msgid="2272741639606146903">"Wi-Fi 設定"</string>
     <string name="battery_action_bluetooth" msgid="8374789049507723142">"藍牙設定"</string>
     <string name="battery_desc_voice" msgid="8980322055722959211">"語音通話耗電量"</string>
     <string name="battery_desc_standby" msgid="3009080001948091424">"手機閒置時的耗電量"</string>
@@ -909,9 +961,9 @@
     <string name="battery_desc_bluetooth" msgid="7535520658674621902">"藍牙耗電量"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"未使用藍牙時即關閉藍牙"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"嘗試連線至不同的藍牙裝置"</string>
-    <string name="battery_desc_apps" msgid="8123202939321333639">"應用程式執行時的耗電量"</string>
+    <string name="battery_desc_apps" msgid="6665712811746233450">"應用程式耗電量"</string>
     <string name="battery_sugg_apps_info" msgid="6065882899391322442">"停止或解除安裝應用程式"</string>
-    <string name="battery_sugg_apps_gps" msgid="4145005297393800223">"GPS 功能未使用時自動關閉"</string>
+    <string name="battery_sugg_apps_gps" msgid="4545056413090932541">"手動控制 GPS 以防止應用程式使用 GPS"</string>
     <string name="battery_sugg_apps_settings" msgid="8021302847272481168">"應用程式可能有提供節省電力的設定"</string>
     <string name="menu_stats_unplugged" msgid="8296577130840261624">"拔除插頭後已過了 <xliff:g id="UNPLUGGED">%1$s</xliff:g>"</string>
     <string name="menu_stats_last_unplugged" msgid="5922246077592434526">"<xliff:g id="UNPLUGGED">%1$s</xliff:g> 前拔除插頭"</string>
@@ -961,6 +1013,8 @@
     <string name="pico_not_installed" msgid="6266845418419994311">"未安裝"</string>
     <string name="pico_voice_summary_female" msgid="8047327176247727492">"女性"</string>
     <string name="pico_voice_summary_male" msgid="8331266854058577610">"男性"</string>
+    <string name="tts_notif_engine_install_title" msgid="7000346872482649034">"語音合成引擎安裝完畢"</string>
+    <string name="tts_notif_engine_install_message" msgid="5304661142202662693">"使用前請先啟用新引擎"</string>
     <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>
@@ -1047,8 +1101,10 @@
     <string name="credentials_access_summary" msgid="319662078718574168">"允許應用程式存取安全認證及其他認證"</string>
     <string name="credentials_unlock" msgid="1463040326264133844">"輸入密碼"</string>
     <string name="credentials_unlock_hint" msgid="594679530407918031">"輸入認證儲存空間密碼。"</string>
-    <string name="credentials_install_certificates" msgid="177337517568022236">"從 SD 卡安裝"</string>
-    <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"從 SD 卡安裝加密憑證"</string>
+    <string name="credentials_install_certificates" product="nosdcard" msgid="619171634797689906">"從 USB 儲存裝置安裝"</string>
+    <string name="credentials_install_certificates" product="default" msgid="177337517568022236">"從 SD 卡安裝"</string>
+    <string name="credentials_install_certificates_summary" product="nosdcard" msgid="8920330112631198575">"從 USB 儲存裝置安裝已加密的憑證"</string>
+    <string name="credentials_install_certificates_summary" product="default" msgid="7737001268684193093">"從 SD 卡安裝加密憑證"</string>
     <string name="credentials_set_password" msgid="9104473585811899989">"設定密碼"</string>
     <string name="credentials_set_password_summary" msgid="8287876917562085701">"設定或變更認證儲存空間密碼"</string>
     <string name="credentials_reset" msgid="9170150870552453457">"清除儲存空間"</string>
@@ -1068,6 +1124,16 @@
     <string name="credentials_erased" msgid="7700309135582200849">"已清除認證儲存空間內容。"</string>
     <string name="credentials_enabled" msgid="7588607413349978930">"已啟用認證儲存空間。"</string>
     <string name="credentials_disabled" msgid="7453188089059045380">"已停用認證儲存空間。"</string>
+    <string name="encrypted_fs_category" msgid="1841367653663913956">"加密檔案系統"</string>
+    <string name="encrypted_fs_enable" msgid="3884033081603327729">"加密使用者隱私資訊"</string>
+    <string name="encrypted_fs_enable_summary" msgid="5635188119509076089">"啟用加密檔案系統,以儲存此裝置的使用者隱私資訊"</string>
+    <string name="encrypted_fs_enable_dialog" msgid="919487211207214266">"啟用加密檔案系統前必須抹除裝置資料。"</string>
+    <string name="encrypted_fs_disable_dialog" msgid="6960413613985682501">"停用加密檔案系統前必須抹除裝置資料。"</string>
+    <string name="encrypted_fs_enable_button" msgid="8453841319751433751">"啟用"</string>
+    <string name="encrypted_fs_disable_button" msgid="8468354944060220496">"停用"</string>
+    <string name="encrypted_fs_cancel_button" msgid="4785921255266305799">"取消"</string>
+    <string name="encrypted_fs_cancel_confirm" msgid="853572431153803557">"已取消變更加密檔案系統模式。"</string>
+    <string name="encrypted_fs_alert_dialog_title" msgid="583462447886934755">"加密檔案系統警告。"</string>
     <string name="emergency_tone_title" msgid="1055954530111587114">"緊急警示音"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"設定撥打緊急電話時的運作方式"</string>
     <string name="privacy_settings" msgid="9206631214140954954">"隱私設定"</string>
@@ -1075,11 +1141,11 @@
     <string name="backup_section_title" msgid="8856083167469467588">"備份與還原"</string>
     <string name="personal_data_section_title" msgid="7815209034443782061">"個人資料"</string>
     <string name="backup_data_title" msgid="1239105919852668016">"備份我的資料"</string>
-    <string name="backup_data_summary" msgid="5662190190240860035">"備份我的設定與其他應用程式的資料。"</string>
+    <string name="backup_data_summary" msgid="6515285107793232815">"將應用程式資料、Wi-Fi 密碼,以及其他設定備份到 Google 伺服器"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"自動還原功能"</string>
-    <string name="auto_restore_summary" msgid="6867766474057290177">"當我重新安裝應用程式時,還原我已經備份的設定或其他資料。"</string>
+    <string name="auto_restore_summary" msgid="83177150536734378">"當我重新安裝應用程式時,還原我已經備份的設定或其他資料"</string>
     <string name="backup_erase_dialog_title" msgid="3438255037256586237">"備份"</string>
-    <string name="backup_erase_dialog_message" msgid="2948090854996352245">"您確定要停止備份設定及應用程式資料,並清除 Google 伺服器上的所有相關資料嗎?"</string>
+    <string name="backup_erase_dialog_message" msgid="7766283133557587608">"您確定要停止備份您的 Wi-Fi 密碼、書籤及他設定,以及應用程式資料,並清除 Google 伺服器上的所有相關資料嗎?"</string>
     <string name="device_admin_settings_title" msgid="1335557832906433309">"裝置管理設定"</string>
     <string name="active_device_admin_msg" msgid="6930903262612422111">"裝置管理員"</string>
     <string name="remove_device_admin" msgid="3596845261596451437">"撤銷"</string>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index f16f8c9..1a8e17b 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -285,23 +285,6 @@
         <item>2</item>
     </string-array>
 
-    <!-- Match with constants in BatteryHistory class -->
-    <string-array name="battery_history_type_spinner">
-        <item>CPU usage</item>
-        <item>Network usage</item>
-        <item>GPS usage</item>
-        <item>Sensor usage</item>
-        <item>Partial wake usage</item>
-        <item>Other usage</item>
-    </string-array>
-
-    <!-- Match with constants in BatteryStats class -->
-    <string-array name="battery_history_which_spinner">
-        <item>Since last unplugged</item>
-        <item>Total since boot</item>
-        <item>Total in all time</item>
-    </string-array>
-
     <!-- Display options for UsageStats class -->
     <string-array name="usage_stats_display_order_types">
         <item>Usage Time</item>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 0a2c5c5..9a123dd 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -21,4 +21,25 @@
     <declare-styleable name="IconPreferenceScreen">
         <attr name="icon" format="reference" />
     </declare-styleable>
+    
+    <declare-styleable name="BatteryHistoryChart">
+        <!-- Base text color, typeface, size, and style. -->
+        <attr name="android:textAppearance" />
+        <!-- Text color. -->
+        <attr name="android:textColor" />
+        <!-- Size of the text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp). -->
+        <attr name="android:textSize" />
+        <!-- Typeface (normal, sans, serif, monospace) for the text. -->
+        <attr name="android:typeface" />
+        <!-- Style (bold, italic, bolditalic) for the text. -->
+        <attr name="android:textStyle" />
+        <!-- Place a shadow of the specified color behind the text. -->
+        <attr name="android:shadowColor" />
+        <!-- Horizontal offset of the shadow. -->
+        <attr name="android:shadowDx" />
+        <!-- Vertical offset of the shadow. -->
+        <attr name="android:shadowDy" />
+        <!-- Radius of the shadow. -->
+        <attr name="android:shadowRadius" />
+    </declare-styleable>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
old mode 100644
new mode 100755
index 482bab3..4704b4e
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -85,11 +85,15 @@
     <!-- Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_cid">CID</string>
 
+    <!-- Used for diagnostic info screens, precise translation isn't needed. Unmounts the SD card from the phone, meaning it will become available for an attached computer  [CHAR LIMIT=25] -->
+    <string name="sdcard_unmount" product="nosdcard">Unmount USB storage</string>
     <!-- Used for diagnostic info screens, precise translation isn't needed. Unmounts the SD card from the phone, meaning it will become available for an attached computer  -->
-    <string name="sdcard_unmount">Unmount SD card</string>
+    <string name="sdcard_unmount" product="default">Unmount SD card</string>
 
+    <!-- Used for diagnostic info screens, precise translation isn't needed. Formats the SD card in the phone, meaning it will be erased and reformatted [CHAR LIMIT=25] -->
+    <string name="sdcard_format" product="nosdcard">Erase USB storage</string>
     <!-- Used for diagnostic info screens, precise translation isn't needed. Formats the SD card in the phone, meaning it will be erased and reformatted -->
-    <string name="sdcard_format">Format SD card</string>
+    <string name="sdcard_format" product="default">Erase SD card</string>
 
     <!-- choice for the font size spinner -->
     <string name="small_font">Small</string>
@@ -103,8 +107,10 @@
     <!-- Button. Chosen when they want to save the chosen text size. -->
     <string name="font_size_save">OK</string>
 
+    <!-- Title for a notification shown. [CHAR LIMIT=25] -->
+    <string name="sdcard_setting" product="nosdcard">USB storage</string>
     <!-- Title for a notification shown. -->
-    <string name="sdcard_setting">SD card</string>
+    <string name="sdcard_setting" product="default">SD card</string>
 
 
     <!-- Battery Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
@@ -399,22 +405,34 @@
     <string name="sdcard_settings_screen_mass_storage_text">Enable USB mass storage</string>
     <!-- The label for total bytes on SD card -->
     <string name="sdcard_settings_total_bytes_label">Total bytes:</string>
+    <!-- Message when there is no SD card present [CHAR LIMIT=30] -->
+    <string name="sdcard_settings_not_present_status" product="nosdcard">USB storage not mounted</string>
     <!-- Message when there is no SD card present -->
-    <string name="sdcard_settings_not_present_status">No SD card</string>
+    <string name="sdcard_settings_not_present_status" product="default">No SD card</string>
     <!-- Th label for the available (free) sapce on the SD card -->
     <string name="sdcard_settings_available_bytes_label">Available bytes:</string>
+    <!-- Message when the SD card is being used by the computer as mass storage [CHAR LIMIT=30] -->
+    <string name="sdcard_settings_mass_storage_status" product="nosdcard">USB storage is being used as a mass storage device</string>
     <!-- Message when the SD card is being used by the computer as mass storage -->
-    <string name="sdcard_settings_mass_storage_status">SD card is being used as a mass storage device</string>
+    <string name="sdcard_settings_mass_storage_status" product="default">SD card is being used as a mass storage device</string>
+    <!-- Message when it is safe to remove the SD card [CHAR LIMIT=30] -->
+    <string name="sdcard_settings_unmounted_status" product="nosdcard">It is now safe to remove the USB storage</string>
     <!-- Message when it is safe to remove the SD card -->
-    <string name="sdcard_settings_unmounted_status">It is now safe to remove the SD card</string>
+    <string name="sdcard_settings_unmounted_status" product="default">It is now safe to remove the SD card</string>
+    <!-- Error message when the SD card was removed without properly unmounting [CHAR LIMIT=30] -->
+    <string name="sdcard_settings_bad_removal_status" product="nosdcard">USB storage was removed while still in use!</string>
     <!-- Error message when the SD card was removed without properly unmounting -->
-    <string name="sdcard_settings_bad_removal_status">SD card was removed while still in use!</string>
+    <string name="sdcard_settings_bad_removal_status" product="default">SD card was removed while still in use!</string>
     <!-- Label for used bytes on the SD card -->
     <string name="sdcard_settings_used_bytes_label">Used bytes:</string>
+    <!-- Message when it is scanning the SD card for new files [CHAR LIMIT=30]  -->
+    <string name="sdcard_settings_scanning_status" product="nosdcard">Scanning USB storage for media\u2026</string>
     <!-- Message when it is scanning the SD card for new files -->
-    <string name="sdcard_settings_scanning_status">Scanning SD card for media\u2026</string>
+    <string name="sdcard_settings_scanning_status" product="default">Scanning SD card for media\u2026</string>
+    <!-- Message when the SD card is mounted as read only [CHAR LIMIT=30] -->
+    <string name="sdcard_settings_read_only_status" product="nosdcard">USB storage mounted read-only</string>
     <!-- Message when the SD card is mounted as read only -->
-    <string name="sdcard_settings_read_only_status">SD card mounted read-only</string>
+    <string name="sdcard_settings_read_only_status" product="default">SD card mounted read-only</string>
 
     <!-- SetupWizard strings used by DateTimeSettingsSetupWizard.  The button label for going to the next screen. -->
     <string name="next_label">Next</string>
@@ -433,14 +451,14 @@
     <string name="device_info_label">Device info</string>
     <!-- The title of the activity to see battery info. -->
     <string name="battery_info_label">Battery info</string>
-    <!-- The title of the activity to see battery history. -->
-    <string name="battery_history_label">Battery history</string>
     <!-- The title of the activity to adjust display settings -->
     <string name="display_label">Display</string>
     <!-- The title of the activity to see phone info -->
     <string name="phone_info_label">Phone info</string>
+    <!-- The title of the activity to adjust SD card settings [CHAR LIMIT=25] -->
+    <string name="sd_card_settings_label" product="nosdcard">USB storage</string>
     <!-- The title of the activity to adjust SD card settings-->
-    <string name="sd_card_settings_label">SD card</string>
+    <string name="sd_card_settings_label" product="default">SD card</string>
     <!-- The title of the activity to adjust proxy settings -->
     <string name="proxy_settings_label">Proxy settings</string>
 
@@ -451,8 +469,10 @@
     <!-- Button label for generic cancel action -->
     <string name="cancel">Cancel</string>
 
-    <!-- Main Settings screen title -->
+    <!-- Title of the Settings activity shown within the application itself. -->
     <string name="settings_label">Settings</string>
+    <!-- Title of the Settings activity shown in the Launcher. [CHAR LIMIT=20] -->
+    <string name="settings_label_launcher">Settings</string>
     <!-- Label for option to select a settings panel as a shortcut -->
     <string name="settings_shortcut">Settings</string>
     <!-- Wireless controls settings screen, setting check box label -->
@@ -761,6 +781,13 @@
     <!-- Bluetooth settings.  Dock Setting Dialog - Remember setting and don't ask user again -->
     <string name="bluetooth_dock_settings_remember">Remember settings</string>
 
+    <!-- NFC settings -->
+    <!-- Used in the 1st-level settings screen to turn on NFC -->
+    <string name="nfc_quick_toggle_title">NFC</string>
+    <!-- Used in the 1st-level settings screen as the turn-on summary -->
+    <string name="nfc_quick_toggle_summary">Use Near Field Communication to read and exchange tags</string>
+    <string name="nfc_toggle_error" msgid="8998642457947607263">An error occurred.</string>
+
     <!-- Wi-Fi Settings --> <skip />
     <!-- Used in the 1st-level settings screen to turn on Wi-Fi -->
     <string name="wifi_quick_toggle_title">Wi-Fi</string>
@@ -935,16 +962,16 @@
     <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>
+    <string name="wifi_api_test" translatable="false">Wi-Fi 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>
+    <string name="wifi_status_test" translatable="false">Wi-Fi 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>
+    <string name="wifi_state_label" translatable="false">Wi-Fi 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>
@@ -993,7 +1020,7 @@
 
     <!-- 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>
+    <string name="wifi_config_info" translatable="false">Wi-Fi 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>
@@ -1213,12 +1240,15 @@
     <string name="device_status">Status</string>
     <!-- About phone screen, summary of the item to go into the phone status screen -->
     <string name="device_status_summary">Phone number, signal, etc.</string>
-    <!-- Main settings screen item's title to go into the SD card and storage settings screen-->
-    <string name="storage_settings">SD card &amp; phone storage</string>
-    <!-- SD card and storage settings screen title -->
-    <string name="storage_settings_title">SD card &amp; phone storage settings</string>
-    <!-- Main settings screen item's summary for the SD card and storage settings -->
-    <string name="storage_settings_summary">Unmount SD card, view available storage</string>
+
+    <!-- Main settings screen item's title to go into the storage settings screen [CHAR LIMIT=25] -->
+    <string name="storage_settings">Storage</string>
+    <!-- Storage settings screen title [CHAR LIMIT=25] -->
+    <string name="storage_settings_title">Storage settings</string>
+    <!-- [CHAR LIMIT=100] Main settings screen item's summary for the SD card and storage settings -->
+    <string name="storage_settings_summary" product="nosdcard">Unmount USB storage, view available storage</string>
+    <!-- [CHAR LIMIT=100] Main settings screen item's summary for the SD card and storage settings -->
+    <string name="storage_settings_summary" product="default">Unmount SD card, view available storage</string>
     <!-- Do not translate. About phone, status item title -->
     <string name="status_imei">IMEI</string>
     <!-- Do not translate. About phone, status item title -->
@@ -1254,43 +1284,68 @@
     <!-- About phone, status item title.  How much time the device has had its main CPU awake. -->
     <string name="status_awake_time">Awake time</string>
     <!-- SD card & phone storage settings screen heading. This is displayed above items that pertain to the phone's internal storage  -->
-    <string name="internal_memory">Internal phone storage</string>
+    <string name="internal_memory">Internal storage</string>
+    <!-- SD card & phone storage settings screen heading. This is displayed above items that pertain to the SD card [CHAR LIMIT=30] -->
+    <string name="sd_memory" product="nosdcard">USB storage</string>
     <!-- SD card & phone storage settings screen heading. This is displayed above items that pertain to the SD card -->
-    <string name="sd_memory">SD card</string>
+    <string name="sd_memory" product="default">SD card</string>
     <!-- SD card & phone storage settings title. The amount of free space for some storage partition.  For example, this is listed under both the "Internal phone storage" section and the "SD card" section. -->
     <string name="memory_available">Available space</string>
     <!-- SD card & phone storage settings screen heading.  The total amount of storage space for some storage partition.  For example, this is listed under both the "Internal phone storage" section and the "SD card" section -->
     <string name="memory_size">Total space</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.   [CHAR LIMIT=25] -->
+    <string name="sd_eject" product="default">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.   [CHAR LIMIT=30] -->
+    <string name="sd_eject_summary" product="nosdcard">Unmount the internal USB storage</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">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>
+    <string name="sd_eject_summary" product="default">Unmount the SD card so you can safely remove it</string>
 
-
+    <!-- SD card & phone storage settings item summary that is displayed when no SD card is inserted.  This version of the string can probably never come up on current hardware. [CHAR LIMIT=25] -->
+    <string name="sd_insert_summary" product="nosdcard">Insert USB storage for mounting</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>
+    <string name="sd_insert_summary" product="default">Insert an SD card for mounting</string>
+
+    <!-- Storage setting item that will mount USB storage if it unmounted. A user should never see this. [CHAR LIMIT=25] -->
+    <string name="sd_mount" product="nosdcard">Mount USB storage</string>
+    <!-- SD card & phone storage settings item title that will result in the phone mounting the SD card. [CHAR LIMIT=25] -->
+    <string name="sd_mount" product="default">Mount SD card</string>
+    <!-- Subtext for Mount USB storage in Storage settings. User should never see this. -->
+    <string name="sd_mount_summary" product="nosdcard">Mount the USB storage</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>
+    <string name="sd_mount_summary" product="default">Mount the SD card</string>
+
+    <!-- SD card & phone storage settings item title that will result in the phone formatting the USB storage.   [CHAR LIMIT=25] -->
+    <string name="sd_format" product="nosdcard">Erase USB storage</string>
+    <!-- SD card & phone storage settings item title that will result in the phone formatting the SD card.   [CHAR LIMIT=25] -->
+    <string name="sd_format" product="default">Erase SD card</string>
+    <!-- SD card & phone storage settings item title that will result in the phone unmounting the SD card.   [CHAR LIMIT=30] -->
+    <string name="sd_format_summary" product="nosdcard">Erases all data on the phone\'s internal USB storage, such as music and photos</string>
     <!-- SD card & phone storage settings item title that will result in the phone unmounting the SD card.   -->
-    <string name="sd_format_summary">Format (erase) the SD card</string>
+    <string name="sd_format_summary" product="default">Erases all data on the phone\'s SD card, such as music and photos</string>
     <!-- SD card status when it is not available status -->
     <string name="sd_unavailable">Unavailable</string>
     <!-- SD card status when it is mounted as read only  -->
     <string name="read_only">\u0020(Read-only)</string>
+    <!-- SD card eject confirmation dialog title   [CHAR LIMIT=25] -->
+    <string name="dlg_confirm_unmount_title" product="nosdcard">Unmount USB storage</string>
     <!-- SD card eject confirmation dialog title   -->
-    <string name="dlg_confirm_unmount_title">Unmount SD card</string>
+    <string name="dlg_confirm_unmount_title" product="default">Unmount SD card</string>
+    <!-- SD card eject confirmation dialog  [CHAR LIMIT=NONE] -->
+    <string name="dlg_confirm_unmount_text" product="nosdcard">If you unmount the USB storage, some applications you are using will stop and may be unavailable until you remount the USB storage.</string>
     <!-- SD card eject confirmation dialog  -->
-    <string name="dlg_confirm_unmount_text">If you unmount the SD card, some applications you are using will stop and may be unavailable until you remount the SD card.</string>
+    <string name="dlg_confirm_unmount_text" product="default">If you unmount the SD card, some applications you are using will stop and may be unavailable until you remount the SD card.</string>
+    <!-- SD card eject error dialog title   [CHAR LIMIT=30] -->
+    <string name="dlg_error_unmount_title" product="nosdcard">Unmounting USB storage failed</string>
     <!-- SD card eject error dialog title   -->
-    <string name="dlg_error_unmount_title">Unmount SD card failed</string>
+    <string name="dlg_error_unmount_title" product="default">Unmount SD card failed</string>
+    <!-- SD card eject error dialog text   [CHAR LIMIT=NONE] -->
+    <string name="dlg_error_unmount_text" product="nosdcard">Cannot unmount USB storage. Try again later.</string>
     <!-- SD card eject error dialog text   -->
-    <string name="dlg_error_unmount_text">Cannot unmount SD card. Try again later.</string>
-    <!-- SD card unmount informative text   -->
-    <string name="unmount_inform_text">SD card will be unmounted. Check the notification area for status.</string>
+    <string name="dlg_error_unmount_text" product="default">Cannot unmount SD card. Try again later.</string>
+    <!-- SD card unmount informative text   [CHAR LIMIT=NONE] -->
+    <string name="unmount_inform_text" product="nosdcard">USB storage will be unmounted.</string>
+    <!-- SD card unmount informative text   [CHAR LIMIT=NONE] -->
+    <string name="unmount_inform_text" product="default">SD card will be unmounted.</string>
     <!-- SD card eject progress title   -->
     <string name="sd_ejecting_title">Unmounting</string>
     <!-- SD card eject progress text   -->
@@ -1374,8 +1429,18 @@
     <string name="master_clear_title">Factory data reset</string>
     <!-- SD card & phone storage settings screen, setting option summary text under Internal phone storage heading -->
     <string name="master_clear_summary">Erases all data on phone</string>
+    <!-- SD card & phone storage settings screen, message on screen after user selects Factory data reset [CHAR LIMIT=NONE] -->
+    <string name="master_clear_desc" product="nosdcard">"This will erase all data from your phone\'s <b>internal storage</b>, including:\n\n<li>Your Google account</li>\n<li>System and application data and settings</li>\n<li>Downloaded applications</li>\n\nTo clear all data on this phone the <b>USB storage</b> needs to be erased.\n\n"</string>
     <!-- SD card & phone storage settings screen, message on screen after user selects Factory data reset -->
-    <string name="master_clear_desc">"This will erase all data from your phone, including:\n<li>Your Google account</li>\n<li>System and application data and settings</li>\n<li>Downloaded applications</li>\nIt will not erase:\n<li>Current system software and bundled applications</li>\n<li>SD card files, such as music or photos</li>"</string>
+    <string name="master_clear_desc" product="default" >"This will erase all data from your phone\'s <b>internal storage</b>, including:\n\n<li>Your Google account</li>\n<li>System and application data and settings</li>\n<li>Downloaded applications</li>\n\nTo also clear music, pictures, and other user data, the <b>SD card</b> needs to be erased.\n\n"</string>
+    <!-- SD card & phone storage settings screen, label for check box to erase USB storage [CHAR LIMIT=30] -->
+    <string name="erase_external_storage" product="nosdcard">Erase USB storage</string>
+    <!-- SD card & phone storage settings screen, label for check box to erase SD card [CHAR LIMIT=30] -->
+    <string name="erase_external_storage" product="default">Erase SD card</string>
+    <!-- SD card & phone storage settings screen, description for check box to erase USB storage [CHAR LIMIT=30] -->
+    <string name="erase_external_storage_description" product="nosdcard">Erase all the data on the phone\'s internal USB storage, such as music or photos.</string>
+    <!-- SD card & phone storage settings screen, description for check box to erase USB storage [CHAR LIMIT=30] -->
+    <string name="erase_external_storage_description" product="default">Erase all the data on the phone\'s SD card, such as music or photos.</string>
     <!-- SD card & phone storage settings screen, button on screen after user selects Factory data reset -->
     <string name="master_clear_button_text">Reset phone</string>
     <!-- SD card & phone storage settings screen, message on screen after user selects Reset phone button -->
@@ -1390,22 +1455,34 @@
     <string name="master_clear_failed">No reset was performed because the System Clear service is not available.</string>
 
     <!-- Media Format -->
+    <!-- SD card & phone storage settings screen, setting option name under Internal phone storage heading [CHAR LIMIT=25] -->
+    <string name="media_format_title" product="nosdcard">Erase USB storage</string>
     <!-- SD card & phone storage settings screen, setting option name under Internal phone storage heading -->
-    <string name="media_format_title">Format SD card.</string>
+    <string name="media_format_title" product="default">Erase SD card</string>
+    <!-- SD card & phone storage settings screen, setting option summary text under Internal phone storage heading [CHAR LIMIT=30] -->
+    <string name="media_format_summary" product="nosdcard">Erases all data in USB storage</string>
     <!-- SD card & phone storage settings screen, setting option summary text under Internal phone storage heading -->
-    <string name="media_format_summary">Erases all data on the SD card</string>
-    <!-- SD card & phone storage settings screen, message on screen after user selects Factory data reset -->
-    <string name="media_format_desc">This action will erase the SD card in the phone. You will lose ALL data on the card!</string>
+    <string name="media_format_summary" product="default">Erases all data on the SD card</string>
+    <!-- SD card & phone storage settings screen, message on screen after user selects Factory data reset [CHAR LIMIT=NONE] -->
+    <string name="media_format_desc" product="nosdcard">This action will erase the USB storage. You will lose <b>all</b> data stored there!</string>
+    <!-- SD card & phone storage settings screen, message on screen after user selects Factory data reset [CHAR LIMIT=NONE] -->
+    <string name="media_format_desc" product="default">This action will erase the SD card. You will lose <b>all</b> data on the card!</string>
+    <!-- SD card & phone storage settings screen, button on screen after user selects Factory data reset [CHAR LIMIT=25] -->
+    <string name="media_format_button_text" product="nosdcard">Erase USB storage</string>
     <!-- SD card & phone storage settings screen, button on screen after user selects Factory data reset -->
-    <string name="media_format_button_text">Format SD card</string>
-    <!-- SD card & phone storage settings screen, message on screen after user selects Format media button -->
-    <string name="media_format_final_desc">Format SD card, erasing all your media? Action cannot be reversed!</string>
+    <string name="media_format_button_text" product="default">Erase SD card</string>
+    <!-- SD card & phone storage settings screen, message on screen after user selects Format media button [CHAR LIMIT=NONE] -->
+    <string name="media_format_final_desc" product="nosdcard">Erase USB storage, deleting all files stored there? Action cannot be reversed!</string>
+    <!-- SD card & phone storage settings screen, message on screen after user selects Format media button [CHAR LIMIT=NONE] -->
+    <string name="media_format_final_desc" product="default">Erase SD card, deleting all files stored there? Action cannot be reversed!</string>
     <!-- SD card & phone storage settings screen, button on screen after user selects Format media button -->
     <string name="media_format_final_button_text">Erase everything</string>
     <!-- Message to draw an unlock pattern before clearing the device -->
     <string name="media_format_gesture_prompt">Draw your unlock pattern</string>
-    <!-- Explanation of drawing unlock pattern to format card -->
-    <string name="media_format_gesture_explanation">You must draw your unlock pattern to confirm an SD card format.</string>
+    <!-- Explanation of drawing unlock pattern to format card [CHAR LIMIT=NONE] -->
+    <string name="media_format_gesture_explanation" product="nosdcard">You must draw your unlock pattern to confirm that you want to erase the USB storage.</string>
+    <!-- Explanation of drawing unlock pattern to format card [CHAR LIMIT=NONE] -->
+    <string name="media_format_gesture_explanation" product="default">You must draw your unlock pattern to confirm that you want to erase the SD card.</string>
 
     <!-- Main settings screen, Call settings title for item to go into the call settings -->
     <string name="call_settings_title">Call settings</string>
@@ -1453,8 +1530,8 @@
     <string name="location_neighborhood_level">Location determined by Wi-Fi and/or mobile networks</string>
     <!-- Security & location settings screen, setting check box label if the GPS receiver should be enabled -->
     <string name="location_gps">Use GPS satellites</string>
-    <!-- Security & location settings screen, setting summary when Use GPS satellites check box is selected -->
-    <string name="location_street_level">When locating, accurate to street level (uncheck to conserve battery)</string>
+    <!-- [CHAR LIMIT=100] Security & location settings screen, setting summary when Use GPS satellites check box is selected -->
+    <string name="location_street_level">When locating, accurate to street level</string>
     <!-- Security & location settings screen, setting summary when Use GPS satellites check box is clear -->
     <string name="location_gps_disabled">Locate to street-level (requires more battery plus view of sky)</string>
     <!-- Security & location settings screen, setting check box label if Assisted GPS should be enabled -->
@@ -1651,6 +1728,10 @@
     <string name="data_size_label">Data</string>
     <!-- Manage applications, individual application info screen, button label under Storage heading. Button to remove the application from the system. -->
     <string name="uninstall_text">Uninstall</string>
+    <!-- [CHAR LIMIT=25] Manage applications, individual application info screen, button label under Storage heading. Button to disable an existing application. -->
+    <string name="disable_text">Disable</string>
+    <!-- [CHAR LIMIT=25] Manage applications, individual application info screen, button label under Storage heading. Button to re-enable an existing application. -->
+    <string name="enable_text">Enable</string>
     <!-- Manage applications, individual application info screen, button label under Storage heading. Button to clear all data associated with tis app (for exampel, remove all cached emails for an Email app) -->
     <string name="clear_user_data_text">Clear data</string>
     <!-- Manage applications, restore updated system application to factory version -->
@@ -1663,10 +1744,14 @@
     <string name="clear_activities">Clear defaults</string>
     <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
     <string name="unknown">Unknown</string>
-    <!-- Manage applications screen, menu item.  Sorts all of the apps in the list alphabetically. -->
-    <string name="sort_order_alpha">Sort</string>
+    <!-- [CHAR LIMIT=25] Manage applications screen, menu item.  Sorts all of the apps in the list alphabetically. -->
+    <string name="sort_order_alpha">Sort by name</string>
     <!-- Manage applications screen, menu item. Sorts all of the apps in the list based on their file size.  This is used to uninstall when space is getting low. -->
     <string name="sort_order_size">Sort by size</string>
+    <!-- [CHAR LIMIT=25] Manage applications screen, menu item.  Show running services. -->
+    <string name="show_running_services">Show running services</string>
+    <!-- [CHAR LIMIT=25] Manage applications screen, menu item.  Show background cached processes. -->
+    <string name="show_background_processes">Show cached processes</string>
     <!-- Manage applications screen, individual app screen, button label when the user wants to manage the space taken up by an app. -->
     <string name="manage_space_text">Manage space</string>
     <!-- Text for menu option in ManageApps screen to present various menu options -->
@@ -1683,9 +1768,21 @@
     packages only. -->
     <string name="filter_apps_running">Running</string>
     <!-- Text for filter option in ManageApps screen to display list of
+    packages installed on sdcard. [CHAR LIMIT=30] -->
+    <string name="filter_apps_onsdcard" product="nosdcard">USB storage</string>
+    <!-- Text for filter option in ManageApps screen to display list of
     packages installed on sdcard. -->
-    <string name="filter_apps_onsdcard">On SD card</string>
-    <string name="loading">Loading\u2026</string>
+    <string name="filter_apps_onsdcard" product="default">On SD card</string>
+    <!-- [CHAR LIMIT=25] Manage applications, text telling using an application is disabled. -->
+    <string name="disabled">Disabled</string>
+    <!-- [CHAR LIMIT=25] Text shown when there are no applications to display. -->
+    <string name="no_applications">No applications.</string>
+    <!-- [CHAR LIMIT=15] Manage applications, label for chart showing internal storage use. -->
+    <string name="internal_storage">Internal storage</string>
+    <!-- [CHAR LIMIT=15] Manage applications, label for chart showing SD card storage use. -->
+    <string name="sd_card_storage" product="nosdcard">USB storage</string>
+    <!-- [CHAR LIMIT=15] Manage applications, label for chart showing SD card storage use. -->
+    <string name="sd_card_storage" product="default">SD card storage</string>
     <!-- Manage app screen, shown when the activity is busy recomputing the size of each app -->
     <string name="recompute_size">Recomputing size\u2026</string>
     <!-- Manage applications, individual application screen, confirmation dialog title. Displays when user selects to "Clear data". -->
@@ -1723,8 +1820,10 @@
     <string name="move_app">Move</string>
     <!-- Manage applications, text for Move button to move app to internal storage -->
     <string name="move_app_to_internal">Move to phone</string>
+    <!-- Manage applications, text for Move button  to move app to sdcard [CHAR LIMIT=25] -->
+    <string name="move_app_to_sdcard" product="nosdcard">Move to USB storage</string>
     <!-- Manage applications, text for Move button  to move app to sdcard -->
-    <string name="move_app_to_sdcard">Move to SD card</string>
+    <string name="move_app_to_sdcard" product="default">Move to SD card</string>
     <!-- Manage applications, title for dialog when killing persistent apps-->
     <!-- Manage applications, text for Move button when move is in progress -->
     <string name="moving">Moving</string>
@@ -1737,8 +1836,8 @@
     <string name="system_package">System updates cannot be installed on external media.</string>
 
     <string name="force_stop_dlg_title">Force stop</string>
-    <!-- Manage applications, text for dialog when killing persistent apps-->
-    <string name="force_stop_dlg_text">This application will be restarted right way. Are you sure you want to force stop?</string>
+    <!-- [CHAR LIMIT=200] Manage applications, text for dialog when killing persistent apps-->
+    <string name="force_stop_dlg_text">Force stopping an application can cause it to misbehave.  Are you sure?</string>
     <!-- Manage applications, text for dialog when moving an app -->
     <string name="move_app_failed_dlg_title">Move application</string>
     <!-- Manage applications, text for dialog moving an app -->
@@ -1748,47 +1847,95 @@
     <!-- Manage applications. application installation location summary -->
     <string name="app_install_location_summary">Change the preferred installation location for new applications.</string>
 
+    <!-- [CHAR LIMIT=25] Services settings screen, setting option name for the user to go to the screen to view app storage use -->
+    <string name="storageuse_settings_title">Storage use</string>
+    <!-- Services settings screen, setting option summary for the user to go to the screen to app storage use -->
+    <string name="storageuse_settings_summary">View storage used by applications</string>
+
     <!-- Services settings screen, setting option name for the user to go to the screen to view running services -->
     <string name="runningservices_settings_title">Running services</string>
     <!-- Services settings screen, setting option summary for the user to go to the screen to view running services  -->
     <string name="runningservices_settings_summary">View and control currently running services</string>
     <!-- Label for a service item when it is restarting -->
     <string name="service_restarting">Restarting</string>
-    <!-- Running services, body text when there are no services to show -->
-    <string name="no_running_services">No running services</string>
-    <!-- Running services, title of dialog to stop a service -->
-    <string name="confirm_stop_service">Stop service?</string>
-    <!-- Running services, message of dialog to stop a service -->
-    <string name="confirm_stop_service_msg">The service will no longer run until
-            started again.  This may have undesirable
-            consequences on the application
-            <xliff:g id="application">%1$s</xliff:g>.</string>
-    <!-- Running services, button to stop a service -->
-    <string name="confirm_stop_stop">Stop</string>
-    <!-- Running services, button to cancel stopping of a service -->
-    <string name="confirm_stop_cancel">Cancel</string>
+    <!-- Label for a process item representing a background process -->
+    <string name="cached">Cached background process</string>
+    <!-- [CHAR LIMIT=25] Text shown when there are no services running -->
+    <string name="no_running_services">Nothing running.</string>
     <!-- Running services, description for a service in the started state -->
-    <string name="service_started_by_app">Started by application: touch to stop</string>
+    <string name="service_started_by_app">Started by application.</string>
     <!-- Running services, description for a service in the started state -->
-    <string name="service_client_name"><xliff:g id="client_name">%1$s</xliff:g>: touch to manage</string>
-    <!-- Running services, summary of background processes -->
-    <string name="service_background_processes">Avail: <xliff:g id="free">%2$s</xliff:g>+<xliff:g id="memory">%3$s</xliff:g> in <xliff:g id="count">%1$d</xliff:g></string>
-    <!-- Running services, summary of foreground processes -->
-    <string name="service_foreground_processes">Other: <xliff:g id="memory">%2$s</xliff:g> in <xliff:g id="count">%1$d</xliff:g></string>
+    <string name="service_client_name"><xliff:g id="client_name">%1$s</xliff:g></string>
+    <!-- [CHAR LIMIT=10] Running services, summary of background processes -->
+    <string name="service_background_processes"><xliff:g id="memory">%1$s</xliff:g> free</string>
+    <!-- [CHAR LIMIT=10] Running services, summary of foreground processes -->
+    <string name="service_foreground_processes"><xliff:g id="memory">%1$s</xliff:g> used</string>
+    <!-- [CHAR LIMIT=10] Running services, label for chart showing memory use. -->
+    <string name="memory">RAM</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>
+    <string name="service_process_name"><xliff:g id="process">%1$s</xliff:g></string>
+    <!-- Descriptive text of a running process: singular process, singular service. -->
+    <string name="running_processes_item_description_s_s"><xliff:g id="numprocess">%1$d</xliff:g>
+        process and <xliff:g id="numservices">%2$d</xliff:g> service</string>
+    <!-- Descriptive text of a running process: singular process, plural service. -->
+    <string name="running_processes_item_description_s_p"><xliff:g id="numprocess">%1$d</xliff:g>
+        process and <xliff:g id="numservices">%2$d</xliff:g> services</string>
+     <!-- Descriptive text of a running process: plural process, singular service. -->
+    <string name="running_processes_item_description_p_s"><xliff:g id="numprocess">%1$d</xliff:g>
+        processes and <xliff:g id="numservices">%2$d</xliff:g> service</string>
+    <!-- Descriptive text of a running process: plural process, plural service. -->
+    <string name="running_processes_item_description_p_p"><xliff:g id="numprocess">%1$d</xliff:g>
+        processes and <xliff:g id="numservices">%2$d</xliff:g> services</string>
 
+    <!-- Details about an application's running services. -->
+    <string name="runningservicedetails_settings_title">Running application</string>
+    <!-- Message displayed when there are no active services in a process. -->
+    <string name="no_services">Not active</string>
+    <!-- Title for list of services. -->
+    <string name="runningservicedetails_services_title">Services</string>
+    <!-- Title for list of services. -->
+    <string name="runningservicedetails_processes_title">Processes</string>
+    <!-- Running service details, stop a service that has started itself. -->
+    <string name="service_stop">Stop</string>
+    <!-- Running service details, manage a service that is running for some other reason. -->
+    <string name="service_manage">Settings</string>
+    <!-- Running service details, default description for services that are started. -->
+    <string name="service_stop_description">This service was started by its
+        application.  Stopping it may cause the application to fail.</string>
+    <!-- Running service details, description for running heavy-weight process. -->
+    <string name="heavy_weight_stop_description">This application can not safely
+        be stopped.  Doing so may lose some of your current work.</string>
+    <!-- Running service details, description for background process. -->
+    <string name="background_process_stop_description">This is an old application
+        process that is being kept for better speed in case it is needed again.
+        There is usually no reason to stop it.</string>
+    <!-- Running service details, default description for services that are managed. -->
+    <string name="service_manage_description"><xliff:g id="client_name">%1$s</xliff:g>:
+        currently in use.  Touch Settings to control it.</string>
+    <!-- Description of the main process in the details. -->
+    <string name="main_running_process_description">Main process that is in use.</string>
+    <!-- Message that a process's service is in use. -->
+    <string name="process_service_in_use_description">Service <xliff:g id="comp_name">%1$s</xliff:g>
+        is in use.</string>
+    <!-- Message that a process's provider is in use. -->
+    <string name="process_provider_in_use_description">Provider <xliff:g id="comp_name">%1$s</xliff:g>
+        is in use.</string>
+    <!-- Running service details, stop confirmation dialog title. Displays when user selects selects to stop a system service. -->
+    <string name="runningservicedetails_stop_dlg_title">Stop system service?</string>
+    <!-- Running service details, stop confirmation descriptive text. Displays when user selects selects to stop a system service. -->
+    <string name="runningservicedetails_stop_dlg_text">Are you sure you want to stop this system service? If you do, some
+        features of your phone may stop working correctly until you power it off
+        and then on again.</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>
     <!-- Title of Language and keyboard settings screen -->
     <string name="language_keyboard_settings_title">Language &amp; keyboard settings</string>
-    <!-- Summary 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_summary">Set locale (language and region), text input and auto-correction options</string>
-    <!-- On Text & language settings screen, heading. Inside the "Locale & text" screen, this is the header for settings that are for locale changes. -->
-    <string name="language_category">Locale setting</string>
-    <!-- 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 Language & keyboard settings screen, heading. Inside the "Language & keyboard settings" screen, this is the header for settings that relate to language (select the system language, user dictionary for the language). -->
+    <string name="language_settings_category">Language settings</string>
+    <!-- On Language & keyboard settings screen, heading. Inside the "Language & keyboard settings" screen, this is the header for settings that relate to keyboard (enable/disable each keyboard, settings for each keyboard). -->
+    <string name="keyboard_settings_category">Keyboard 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 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. -->
@@ -1845,8 +1992,6 @@
     <string name="testing_phone_info">Phone information</string>
     <!-- In the Testing screen. The item title of the activity that shows a bunch of battery-related information.  -->
     <string name="testing_battery_info">Battery information</string>
-    <!-- In the Testing screen. The item title of the activity that shows a bunch of historical battery-related information.  -->
-    <string name="testing_battery_history">Battery history</string>
     <!-- Do not translate. In the Testing screen. The item title of the activity that shows a bunch of SIM-related operations.  -->
     <string name="testing_sim_toolkit">SIM toolkit</string>
 
@@ -1881,9 +2026,9 @@
     <!-- Summary for on-screen keyboard settings -->
     <string name="onscreen_keyboard_settings_summary">Onscreen keyboard settings</string>
     <!-- Title for built-in keyboard settings -->
-    <string name="builtin_keyboard_settings_title">Device keyboard</string>
+    <string name="builtin_keyboard_settings_title">Built-in keyboard</string>
     <!-- Summary for built-in keyboard settings -->
-    <string name="builtin_keyboard_settings_summary">Built-in keyboard settings</string>
+    <string name="builtin_keyboard_settings_summary">Built-in, physical keyboard settings</string>
 
     <!-- Development Settings.  the title for the item to take the user to Development settings.  Development settings are settings meant for application developers.  -->
     <string name="development_settings_title">Development</string>
@@ -1916,39 +2061,6 @@
          the final name for Gadgets/Widgets, so please translate both for now. -->
     <string name="widget_picker_title">Choose widget</string>
 
-    <!-- Used to display "Details for UID 1234" in BatteryHistory -->
-    <string name="battery_history_details_for">Details for UID <xliff:g id="number" example="1234">%d</xliff:g></string>
-
-    <!-- Used to name a set of apps that share a user id in BatteryHistory -->
-    <string name="battery_history_uid">UID <xliff:g id="user_id">%1$d</xliff:g></string>
-
-    <!-- Used as a title for the network usage details screen in BatteryHistory -->
-    <string name="battery_history_network_usage">Network usage details for <xliff:g id="app_name">%1$s</xliff:g>:</string>
-
-    <!-- Used to show the number of bytes received by an app over the network in BatteryHistory -->
-    <string name="battery_history_bytes_received">Bytes received: <xliff:g id="bytes">%1$d</xliff:g></string>
-
-    <!-- Used to show the number of bytes sent by an app over the network in BatteryHistory -->
-    <string name="battery_history_bytes_sent">Bytes sent: <xliff:g id="bytes">%1$d</xliff:g></string>
-
-    <!-- Used to show the number of bytes sent and received by an app over the network in BatteryHistory -->
-    <string name="battery_history_bytes_total">Total bytes: <xliff:g id="bytes">%1$d</xliff:g></string>
-
-    <!-- Used as a title for the cpu usage details screen in BatteryHistory -->
-    <string name="battery_history_cpu_usage">CPU usage details for <xliff:g id="app_name">%1$s</xliff:g>:</string>
-
-    <!-- Used to show the time spent in user code for a given app in BatteryHistory -->
-    <string name="battery_history_user_time">User time: </string>
-
-    <!-- Used to show the time spent in system code for a given app in BatteryHistory -->
-    <string name="battery_history_system_time">System time: </string>
-
-    <!-- Used to show the time spent in user or system code for a given app in BatteryHistory -->
-    <string name="battery_history_total_time">Total time: </string>
-
-    <!-- Used to show the number of times an app has been started in BatteryHistory -->
-    <string name="battery_history_starts">Starts: <xliff:g id="starts">%1$d</xliff:g></string>
-
     <!-- Used to show an amount of time in the form "d days, h hours, m minutes, s seconds" in BatteryHistory -->
     <string name="battery_history_days"><xliff:g id="days">%1$d</xliff:g>d <xliff:g id="hours">%2$d</xliff:g>h <xliff:g id="minutes">%3$d</xliff:g>m <xliff:g id="seconds">%4$d</xliff:g>s</string>
 
@@ -1960,52 +2072,7 @@
 
     <!-- Used to show an amount of time in the form "s seconds" in BatteryHistory -->
     <string name="battery_history_seconds"><xliff:g id="seconds">%1$d</xliff:g>s</string>
-
-    <!-- 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>
 
@@ -2072,16 +2139,30 @@
     <string name="battery_since_unplugged">Battery use since unplugged</string>
     <!-- Battery usage since user reset the stats -->
     <string name="battery_since_reset">Battery use since reset</string>
+    <!-- Battery usage on battery duration -->
+    <string name="battery_stats_on_battery"><xliff:g id="time">%1$s</xliff:g> on battery</string>
     <!-- Battery usage duration -->
     <string name="battery_stats_duration"><xliff:g id="time">%1$s</xliff:g> since unplugged</string>
+    <!-- [CHAR LIMIT=25] Label for battery stats charging state graph -->
+    <string name="battery_stats_charging_label">Charging</string>
+    <!-- [CHAR LIMIT=25] Label for battery stats screen on state graph -->
+    <string name="battery_stats_screen_on_label">Screen on</string>
+    <!-- [CHAR LIMIT=25] Label for battery stats gps on state graph -->
+    <string name="battery_stats_gps_on_label">GPS on</string>
+    <!-- [CHAR LIMIT=25] Label for battery stats wifi running state graph -->
+    <string name="battery_stats_wifi_running_label">Wi-Fi</string>
+    <!-- [CHAR LIMIT=25] Label for battery stats wake lock state graph -->
+    <string name="battery_stats_wake_lock_label">Awake</string>
+    <!-- [CHAR LIMIT=25] Label for battery stats phone signal strength graph -->
+    <string name="battery_stats_phone_signal_label">Phone signal</string>
     <!-- Battery usage during last unplugged period -->
     <string name="battery_stats_last_duration">@string/menu_stats_last_unplugged</string>
     <!-- CPU awake time title -->
     <string name="awake">Device awake time</string>
     <!-- Wifi on time -->
-    <string name="wifi_on_time">WiFi on time</string>
+    <string name="wifi_on_time">Wi-Fi on time</string>
     <!-- Bluetooth on time -->
-    <string name="bluetooth_on_time">WiFi on time</string>
+    <string name="bluetooth_on_time">Wi-Fi on time</string>
     <!-- Application name and battery usage percentage -->
     <string name="usage_name_percent"><xliff:g id="name">%1$s</xliff:g>" - "
             <xliff:g id="number" example="30">%2$s</xliff:g><xliff:g id="percent" example="%">%%</xliff:g></string>
@@ -2112,8 +2193,12 @@
     <string name="usage_type_cpu">CPU total</string>
     <!-- Label for CPU usage in foreground -->
     <string name="usage_type_cpu_foreground">CPU foreground</string>
+    <!-- [CHAR LIMIT=25] Label for keeping device from sleeping -->
+    <string name="usage_type_wake_lock">Keep awake</string>
     <!-- Label for GPU usage time -->
     <string name="usage_type_gps">GPS</string>
+    <!-- [CHAR LIMIT=25] Label for WIFI usage time -->
+    <string name="usage_type_wifi_running">Wi-Fi running</string>
     <!-- Label for Phone usage time -->
     <string name="usage_type_phone">Phone</string>
     <!-- Label for Data sent -->
@@ -2137,7 +2222,7 @@
     <!-- Label for display settings -->
     <string name="battery_action_display">Display settings</string>
     <!-- Label for wifi settings -->
-    <string name="battery_action_wifi">WiFi settings</string>
+    <string name="battery_action_wifi">Wi-Fi settings</string>
     <!-- Label for bluetooth settings -->
     <string name="battery_action_bluetooth">Bluetooth settings</string>
 
@@ -2169,12 +2254,12 @@
     <!-- Suggestion for bluetooth headset -->
     <string name="battery_sugg_bluetooth_headset">Try connecting to a different bluetooth device</string>
 
-    <!-- Description for power consumed by applications -->
-    <string name="battery_desc_apps">Battery used by applications when running</string>
+    <!-- [CHAR LIMIT=50] Description for power consumed by applications -->
+    <string name="battery_desc_apps">Battery used by application</string>
     <!-- Suggestion for exploring application info to stop or uninstall -->
     <string name="battery_sugg_apps_info">Stop or uninstall the application</string>
-    <!-- Suggestion for getting apps to consume less power due to GPS-->
-    <string name="battery_sugg_apps_gps">"Turn off GPS when you're not using it"</string>
+    <!-- [CHAR LIMIT=100] Suggestion for getting apps to consume less power due to GPS-->
+    <string name="battery_sugg_apps_gps">"Manually control GPS to prevent application from using it"</string>
     <!-- Suggestion for getting apps to consume less power -->
     <string name="battery_sugg_apps_settings">The application may offer settings to reduce battery use</string>
 
@@ -2284,6 +2369,12 @@
     <string name="pico_voice_summary_female">Female</string>
     <!-- On Pico TTS Settings screen, summary text to indicate that a voice is male -->
     <string name="pico_voice_summary_male">Male</string>
+    <!-- [CHAR LIMIT=33] Notification title that appears when the installation of a new TTS engine completed -->
+    <string name="tts_notif_engine_install_title">Speech synthesis engine installed</string>
+    <!-- [CHAR LIMIT=30] Notification message that appears after the user has installed a new TTS engine,
+         to warn the user that this engine cannot be used before the checkbox for that engine
+         in TTS settings is checked. -->
+    <string name="tts_notif_engine_install_message">Enable new engine before use</string>
 
     <!-- Power Control Widget -->
     <string name="gadget_title">Power Control</string>
@@ -2436,10 +2527,14 @@
     <string name="credentials_unlock">Enter password</string>
     <!-- Description of dialog to enable/dislable access to credential storage -->
     <string name="credentials_unlock_hint">Enter the credential storage password.</string>
+    <!-- Title of preference to install certificates from SD card [CHAR LIMIT=25] -->
+    <string name="credentials_install_certificates" product="nosdcard">Install from USB storage</string>
     <!-- Title of preference to install certificates from SD card -->
-    <string name="credentials_install_certificates">Install from SD card</string>
+    <string name="credentials_install_certificates" product="default">Install from SD card</string>
+    <!-- Summary of preference to install certificates from SD card [CHAR LIMIT=25] -->
+    <string name="credentials_install_certificates_summary" product="nosdcard">Install encrypted certificates from USB storage</string>
     <!-- Summary of preference to install certificates from SD card -->
-    <string name="credentials_install_certificates_summary">Install encrypted certificates from SD card</string>
+    <string name="credentials_install_certificates_summary" product="default">Install encrypted certificates from SD card</string>
     <!-- Title of preference to set storage password -->
     <string name="credentials_set_password">Set password</string>
     <!-- Summary of preference to set storage password -->
@@ -2472,6 +2567,27 @@
     <!-- 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 -->
@@ -2489,15 +2605,15 @@
     <!-- Backup data menu title -->
     <string name="backup_data_title">Back up my data</string>
     <!-- Summary text of the "back up data" setting -->
-    <string name="backup_data_summary">Back up my settings and other application data.</string>
+    <string name="backup_data_summary">Back up application data, Wi-Fi passwords, and other settings to Google servers</string>
     <!-- Auto-restore menu title -->
     <string name="auto_restore_title">Automatic restore</string>
     <!-- Summary text of the "automatic restore" setting -->
-    <string name="auto_restore_summary">If I reinstall an application, restore backed up settings or other data.</string>
+    <string name="auto_restore_summary">If I reinstall an application, restore backed up settings or other data</string>
     <!-- Dialog title for confirmation to erase backup data from server -->
     <string name="backup_erase_dialog_title">Backup</string>
     <!-- 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 application data and erase all copies on Google servers?</string>
+    <string name="backup_erase_dialog_message">Are you sure you want to stop backing up your Wi-Fi passwords, bookmarks, and other settings and application data and erase all copies on Google servers?</string>
 
     <!-- Device admin settings screen --><skip/>
     <!-- Device admin settings activity title -->
diff --git a/res/xml/application_settings.xml b/res/xml/application_settings.xml
index 4df21da..27a0411 100644
--- a/res/xml/application_settings.xml
+++ b/res/xml/application_settings.xml
@@ -59,6 +59,23 @@
                 android:targetClass="com.android.settings.RunningServices" />
     </PreferenceScreen>
 
+    <PreferenceScreen
+            android:title="@string/storageuse_settings_title"
+            android:summary="@string/storageuse_settings_summary">
+        <intent android:action="android.intent.action.MAIN"
+                android:targetPackage="com.android.settings"
+                android:targetClass="com.android.settings.applications.StorageUse" />
+    </PreferenceScreen>
+
+    <PreferenceScreen
+            android:key="power_usage"
+            android:title="@string/power_usage_summary_title"
+            android:summary="@string/power_usage_summary">
+        <intent android:action="android.intent.action.MAIN"
+                android:targetPackage="com.android.settings"
+                android:targetClass="com.android.settings.fuelgauge.PowerUsageSummary" />
+    </PreferenceScreen>
+
     <PreferenceScreen 
             android:title="@string/development_settings_title" 
             android:summary="@string/development_settings_summary">
diff --git a/res/xml/device_info_memory.xml b/res/xml/device_info_memory.xml
index 785fded..fd0bf4e 100644
--- a/res/xml/device_info_memory.xml
+++ b/res/xml/device_info_memory.xml
@@ -16,7 +16,8 @@
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <PreferenceCategory android:title="@string/sd_memory">
+    <PreferenceCategory android:key="memory_sd"
+            android:title="@string/sd_memory">
         <Preference android:key="memory_sd_size" 
             style="?android:attr/preferenceInformationStyle" 
             android:title="@string/memory_size"
diff --git a/res/xml/language_settings.xml b/res/xml/language_settings.xml
index d3c0e02..278100e 100644
--- a/res/xml/language_settings.xml
+++ b/res/xml/language_settings.xml
@@ -17,6 +17,9 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
 
+    <PreferenceCategory android:key="language_settings_category"
+            android:title="@string/language_settings_category" />
+
     <PreferenceScreen
             android:key="phone_language"
             android:title="@string/phone_language">
@@ -25,8 +28,16 @@
                 android:targetClass="com.android.settings.LocalePicker"/>
     </PreferenceScreen>
 
-    <PreferenceCategory android:key="text_category"
-            android:title="@string/text_category" />
+    <PreferenceScreen
+            android:title="@string/user_dict_settings_title"
+            android:summary="@string/user_dict_settings_summary">
+        <intent android:action="android.intent.action.MAIN"
+                android:targetPackage="com.android.settings"
+                android:targetClass="com.android.settings.UserDictionarySettings" />
+    </PreferenceScreen>
+
+    <PreferenceCategory android:key="keyboard_settings_category"
+            android:title="@string/keyboard_settings_category" />
 
     <PreferenceScreen
             android:key="hardkeyboard_category"
@@ -36,13 +47,5 @@
                 android:targetPackage="com.android.settings"
                 android:targetClass="com.android.settings.PhysicalKeyboardSettings"/>
     </PreferenceScreen>
-    
-    <PreferenceScreen 
-            android:title="@string/user_dict_settings_title" 
-            android:summary="@string/user_dict_settings_summary">
-        <intent android:action="android.intent.action.MAIN"
-                android:targetPackage="com.android.settings"
-                android:targetClass="com.android.settings.UserDictionarySettings" />
-    </PreferenceScreen>
 
 </PreferenceScreen>
diff --git a/res/xml/settings.xml b/res/xml/settings.xml
index 326c494..6ddbf7c 100644
--- a/res/xml/settings.xml
+++ b/res/xml/settings.xml
@@ -132,21 +132,6 @@
                 android:targetClass="com.android.settings.deviceinfo.Memory" />
         </com.android.settings.IconPreferenceScreen>
 
-        <!-- Search. 
-             The settings activity will ensure that this is resolved to an
-             activity on the system image, otherwise it will remove this
-             preference.
-             The intent action is the same as
-             android.app.SearchManager.INTENT_ACTION_SEARCH_SETTINGS.
-             -->
-
-        <com.android.settings.IconPreferenceScreen
-            settings:icon="@drawable/ic_settings_search"
-            android:title="@string/search_settings"
-            android:key="search_settings">
-            <intent android:action="android.search.action.SEARCH_SETTINGS" />
-        </com.android.settings.IconPreferenceScreen>
-
         <!-- Language -->
 
         <com.android.settings.IconPreferenceScreen
diff --git a/res/xml/testing_settings.xml b/res/xml/testing_settings.xml
index 4b3ea0b..9c0a68b 100644
--- a/res/xml/testing_settings.xml
+++ b/res/xml/testing_settings.xml
@@ -33,13 +33,6 @@
 
 
     <PreferenceScreen
-            android:title="@string/testing_battery_history">
-        <intent android:action="android.intent.action.MAIN"
-                android:targetPackage="com.android.settings"
-                android:targetClass="com.android.settings.battery_history.BatteryHistory" />
-    </PreferenceScreen>
-
-    <PreferenceScreen
             android:title="@string/testing_usage_stats">
         <intent android:action="android.intent.action.MAIN"
                 android:targetPackage="com.android.settings"
diff --git a/res/xml/tether_prefs.xml b/res/xml/tether_prefs.xml
index 6e3d062..77fc7c6 100644
--- a/res/xml/tether_prefs.xml
+++ b/res/xml/tether_prefs.xml
@@ -28,7 +28,6 @@
 
     <PreferenceScreen
         android:key="wifi_ap_settings"
-        android:dependency="enable_wifi_ap"
         android:title="@string/wifi_tether_settings_text"
         android:summary="@string/wifi_tether_settings_subtext" >
         <intent
diff --git a/res/xml/wifi_ap_settings.xml b/res/xml/wifi_ap_settings.xml
index ad21714..9e26154 100644
--- a/res/xml/wifi_ap_settings.xml
+++ b/res/xml/wifi_ap_settings.xml
@@ -24,7 +24,6 @@
 
     <Preference
         android:key="wifi_ap_ssid_and_security"
-        android:dependency="enable_wifi_ap"
         android:title="@string/wifi_tether_configure_ap_text"
         android:persistent="false" />
 
diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index 7c91d50..620472d 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -76,6 +76,12 @@
             android:targetClass="com.android.settings.vpn.VpnSettings" />
     </PreferenceScreen>
 
+    <CheckBoxPreference
+        android:key="toggle_nfc"
+        android:title="@string/nfc_quick_toggle_title"
+        android:summary="@string/nfc_quick_toggle_summary"
+        android:persistent="false" />
+
     <PreferenceScreen
         android:title="@string/network_settings_title"
         android:summary="@string/network_settings_summary"
diff --git a/src/com/android/settings/DeviceAdminAdd.java b/src/com/android/settings/DeviceAdminAdd.java
index 4760277..005196e 100644
--- a/src/com/android/settings/DeviceAdminAdd.java
+++ b/src/com/android/settings/DeviceAdminAdd.java
@@ -35,9 +35,12 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.RemoteCallback;
+import android.text.TextUtils.TruncateAt;
 import android.util.Log;
+import android.view.Display;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.WindowManager;
 import android.widget.AppSecurityPermissions;
 import android.widget.Button;
 import android.widget.ImageView;
@@ -50,6 +53,10 @@
     static final String TAG = "DeviceAdminAdd";
     
     static final int DIALOG_WARNING = 1;
+
+    private static final int MAX_ADD_MSG_LINES_PORTRAIT = 5;
+    private static final int MAX_ADD_MSG_LINES_LANDSCAPE = 2;
+    private static final int MAX_ADD_MSG_LINES = 15;
     
     Handler mHandler;
     
@@ -62,6 +69,7 @@
     TextView mAdminName;
     TextView mAdminDescription;
     TextView mAddMsg;
+    boolean mAddMsgEllipsized = true;
     TextView mAdminWarning;
     ViewGroup mAdminPolicies;
     Button mActionButton;
@@ -138,7 +146,17 @@
         mAdminIcon = (ImageView)findViewById(R.id.admin_icon);
         mAdminName = (TextView)findViewById(R.id.admin_name);
         mAdminDescription = (TextView)findViewById(R.id.admin_description);
+
         mAddMsg = (TextView)findViewById(R.id.add_msg);
+        mAddMsg.setOnClickListener(new View.OnClickListener() {
+            public void onClick(View v) {
+                toggleMessageEllipsis(v);
+            }
+        });
+
+        // toggleMessageEllipsis also handles initial layout:
+        toggleMessageEllipsis(mAddMsg);
+
         mAdminWarning = (TextView)findViewById(R.id.admin_warning);
         mAdminPolicies = (ViewGroup)findViewById(R.id.admin_policies);
         mCancelButton = (Button)findViewById(R.id.cancel_button);
@@ -280,5 +298,27 @@
             mAdding = true;
         }
     }
-    
+
+
+    void toggleMessageEllipsis(View v) {
+        TextView tv = (TextView) v;
+
+        mAddMsgEllipsized = ! mAddMsgEllipsized;
+        tv.setEllipsize(mAddMsgEllipsized ? TruncateAt.END : null);
+        tv.setMaxLines(mAddMsgEllipsized ? getEllipsizedLines() : MAX_ADD_MSG_LINES);
+
+        ImageView iv = (ImageView) findViewById(R.id.add_msg_expander);
+        iv.setImageResource(mAddMsgEllipsized ?
+            com.android.internal.R.drawable.expander_ic_minimized :
+            com.android.internal.R.drawable.expander_ic_maximized);
+    }
+
+    int getEllipsizedLines() {
+        Display d = ((WindowManager) getSystemService(Context.WINDOW_SERVICE))
+                    .getDefaultDisplay();
+
+        return d.getHeight() > d.getWidth() ?
+            MAX_ADD_MSG_LINES_PORTRAIT : MAX_ADD_MSG_LINES_LANDSCAPE;
+    }
+
 }
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index a769c38..8383987 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -16,18 +16,21 @@
 
 package com.android.settings;
 
+import android.content.ComponentName;
 import android.content.Intent;
-import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.SystemClock;
 import android.os.SystemProperties;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceGroup;
-import android.util.Config;
+import android.preference.PreferenceScreen;
+import android.provider.Settings;
 import android.util.Log;
+import android.view.MotionEvent;
 
 import java.io.BufferedReader;
 import java.io.FileReader;
@@ -37,9 +40,7 @@
 import java.util.regex.Pattern;
 
 public class DeviceInfoSettings extends PreferenceActivity {
-
     private static final String TAG = "DeviceInfoSettings";
-    private static final boolean LOGD = false || Config.LOGD;
 
     private static final String KEY_CONTAINER = "container";
     private static final String KEY_TEAM = "team";
@@ -49,14 +50,28 @@
     private static final String KEY_COPYRIGHT = "copyright";
     private static final String KEY_SYSTEM_UPDATE_SETTINGS = "system_update_settings";
     private static final String PROPERTY_URL_SAFETYLEGAL = "ro.url.safetylegal";
-    
+
+    long[] mHits = new long[3];
+
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        
+
         addPreferencesFromResource(R.xml.device_info_settings);
-       
+
+        // If we don't have an IME tutorial, remove that option
+        String currentIme = Settings.Secure.getString(getContentResolver(),
+                Settings.Secure.DEFAULT_INPUT_METHOD);
+        ComponentName component = ComponentName.unflattenFromString(currentIme);
+        Intent imeIntent = new Intent(component.getPackageName() + ".tutorial");
+        PackageManager pm = getPackageManager();
+        List<ResolveInfo> tutorials = pm.queryIntentActivities(imeIntent, 0);
+        if(tutorials == null || tutorials.isEmpty()) {
+            getPreferenceScreen().removePreference(findPreference("system_tutorial"));
+        }
+
         setStringSummary("firmware_version", Build.VERSION.RELEASE);
+        findPreference("firmware_version").setEnabled(true);
         setValueSummary("baseband_version", "gsm.version.baseband");
         setStringSummary("device_model", Build.MODEL);
         setStringSummary("build_number", Build.DISPLAY);
@@ -70,7 +85,7 @@
          * Settings is a generic app and should not contain any device-specific
          * info.
          */
-        
+
         // These are contained in the "container" preference group
         PreferenceGroup parentPreference = (PreferenceGroup) findPreference(KEY_CONTAINER);
         Utils.updatePreferenceToSpecificActivityOrRemove(this, parentPreference, KEY_TERMS,
@@ -81,7 +96,7 @@
                 Utils.UPDATE_PREFERENCE_FLAG_SET_TITLE_TO_MATCHING_ACTIVITY);
         Utils.updatePreferenceToSpecificActivityOrRemove(this, parentPreference, KEY_TEAM,
                 Utils.UPDATE_PREFERENCE_FLAG_SET_TITLE_TO_MATCHING_ACTIVITY);
-        
+
         // These are contained by the root preference screen
         parentPreference = getPreferenceScreen();
         Utils.updatePreferenceToSpecificActivityOrRemove(this, parentPreference,
@@ -91,6 +106,24 @@
                 Utils.UPDATE_PREFERENCE_FLAG_SET_TITLE_TO_MATCHING_ACTIVITY);
     }
 
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+        if (preference.getKey().equals("firmware_version")) {
+            System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
+            mHits[mHits.length-1] = SystemClock.uptimeMillis();
+            if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
+                Intent intent = new Intent(Intent.ACTION_MAIN);
+                intent.setClassName("android",
+                        com.android.internal.app.PlatLogoActivity.class.getName());
+                try {
+                    startActivity(intent);
+                } catch (Exception e) {
+                }
+            }
+        }
+        return super.onPreferenceTreeClick(preferenceScreen, preference);
+    }
+
     private void removePreferenceIfPropertyMissing(PreferenceGroup preferenceGroup,
             String preference, String property ) {
         if (SystemProperties.get(property).equals(""))
@@ -113,11 +146,11 @@
                 getResources().getString(R.string.device_info_default));
         }
     }
-    
+
     private void setValueSummary(String preference, String property) {
         try {
             findPreference(preference).setSummary(
-                    SystemProperties.get(property, 
+                    SystemProperties.get(property,
                             getResources().getString(R.string.device_info_default)));
         } catch (RuntimeException e) {
 
@@ -160,7 +193,7 @@
                         m.group(2)).append(" ").append(m.group(3)).append("\n")
                         .append(m.group(4))).toString();
             }
-        } catch (IOException e) {  
+        } catch (IOException e) {
             Log.e(TAG,
                 "IO Exception when getting kernel version for Device Info screen",
                 e);
diff --git a/src/com/android/settings/LanguageSettings.java b/src/com/android/settings/LanguageSettings.java
index 1252eec..50c78b6 100644
--- a/src/com/android/settings/LanguageSettings.java
+++ b/src/com/android/settings/LanguageSettings.java
@@ -44,6 +44,8 @@
 public class LanguageSettings extends PreferenceActivity {
     
     private static final String KEY_PHONE_LANGUAGE = "phone_language";
+    private static final String KEY_KEYBOARD_SETTINGS_CATEGORY = "keyboard_settings_category";
+    private static final String KEY_HARDKEYBOARD_CATEGORY = "hardkeyboard_category";
     private boolean mHaveHardKeyboard;
 
     private List<InputMethodInfo> mInputMethodProperties;
@@ -70,7 +72,7 @@
 
         if (getAssets().getLocales().length == 1) {
             getPreferenceScreen().
-                removePreference(findPreference("language_category"));
+                removePreference(findPreference(KEY_PHONE_LANGUAGE));
         } else {
             mLanguagePref = findPreference(KEY_PHONE_LANGUAGE);
         }
@@ -78,7 +80,7 @@
         Configuration config = getResources().getConfiguration();
         if (config.keyboard != Configuration.KEYBOARD_QWERTY) {
             getPreferenceScreen().removePreference(
-                    getPreferenceScreen().findPreference("hardkeyboard_category"));
+                    getPreferenceScreen().findPreference(KEY_HARDKEYBOARD_CATEGORY));
         } else {
             mHaveHardKeyboard = true;
         }
@@ -99,7 +101,8 @@
         mLastInputMethodId = Settings.Secure.getString(getContentResolver(),
             Settings.Secure.DEFAULT_INPUT_METHOD);
         
-        PreferenceGroup textCategory = (PreferenceGroup) findPreference("text_category");
+        PreferenceGroup keyboardSettingsCategory = (PreferenceGroup) findPreference(
+                KEY_KEYBOARD_SETTINGS_CATEGORY);
         
         int N = (mInputMethodProperties == null ? 0 : mInputMethodProperties
                 .size());
@@ -115,7 +118,7 @@
                 CheckBoxPreference chkbxPref = new CheckBoxPreference(this);
                 chkbxPref.setKey(prefKey);
                 chkbxPref.setTitle(label);
-                textCategory.addPreference(chkbxPref);
+                keyboardSettingsCategory.addPreference(chkbxPref);
                 mCheckboxes.add(chkbxPref);
             }
 
@@ -135,7 +138,7 @@
                             R.string.input_methods_settings_label_format, label);
                     prefScreen.setSummary(settingsLabel);
                 }
-                textCategory.addPreference(prefScreen);
+                keyboardSettingsCategory.addPreference(prefScreen);
             }
         }
     }
diff --git a/src/com/android/settings/ManageApplications.java b/src/com/android/settings/ManageApplications.java
deleted file mode 100644
index dfff8c9..0000000
--- a/src/com/android/settings/ManageApplications.java
+++ /dev/null
@@ -1,2081 +0,0 @@
-/*
- * Copyright (C) 2006 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.settings.R;
-
-import android.app.ActivityManager;
-import android.app.Dialog;
-import android.app.ProgressDialog;
-import android.app.TabActivity;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.SharedPreferences;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageStatsObserver;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageStats;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.SystemClock;
-import android.text.format.Formatter;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.Window;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.Filter;
-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;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.text.Collator;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.concurrent.CountDownLatch;
-
-/**
- * Activity to pick an application that will be used to display installation information and
- * options to uninstall/delete user data for system applications. This activity
- * can be launched through Settings or via the ACTION_MANAGE_PACKAGE_STORAGE
- * intent.
- * 
- * Initially a compute in progress message is displayed while the application retrieves
- * the list of application information from the PackageManager. The size information
- * for each package is refreshed to the screen. The resource (app description and
- * icon) information for each package is not available yet, so some default values for size
- * icon and descriptions are used initially. Later the resource information for each 
- * application is retrieved and dynamically updated on the screen.
- *  
- * A Broadcast receiver registers for package additions or deletions when the activity is
- * in focus. If the user installs or deletes packages when the activity has focus, the receiver
- * gets notified and proceeds to add/delete these packages from the list on the screen.
- * This is an unlikely scenario but could happen. The entire list gets created every time
- * the activity's onStart gets invoked. This is to avoid having the receiver for the entire
- * life cycle of the application.
- *  
- * The applications can be sorted either alphabetically or 
- * based on size (descending).  If this activity gets launched under low memory
- * situations (a low memory notification dispatches intent 
- * ACTION_MANAGE_PACKAGE_STORAGE) the list is sorted per size.
- *  
- * 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 TabActivity implements
-        OnItemClickListener, DialogInterface.OnCancelListener,
-        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 = 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_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";
-    private static final String ATTR_PKGS="ps";
-    private static final String ATTR_STATS="ss";
-    private static final String ATTR_SIZE_STRS="fs";
-    
-    private static final String ATTR_GET_SIZE_STATUS="passed";
-    private static final String ATTR_PKG_STATS="s";
-    private static final String ATTR_PKG_SIZE_STR="f";
-    
-    // constant value that can be used to check return code from sub activity.
-    private static final int INSTALLED_APP_DETAILS = 1;
-    
-    // sort order that can be changed through the menu can be sorted alphabetically
-    // or size(descending)
-    private static final int MENU_OPTIONS_BASE = 0;
-    // Filter options used for displayed list of applications
-    public static final int FILTER_APPS_ALL = MENU_OPTIONS_BASE + 0;
-    public static final int FILTER_APPS_RUNNING = MENU_OPTIONS_BASE + 1;
-    public static final int FILTER_APPS_THIRD_PARTY = MENU_OPTIONS_BASE + 2;
-    public static final int FILTER_APPS_SDCARD = 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;
-    // sort order
-    private int mSortOrder = SORT_ORDER_ALPHA;
-    // Filter value
-    private int mFilterApps = FILTER_APPS_THIRD_PARTY;
-    
-    // Custom Adapter used for managing items in the list
-    private AppInfoAdapter mAppInfoAdapter;
-    
-    // messages posted to the handler
-    private static final int HANDLER_MESSAGE_BASE = 0;
-    private static final int INIT_PKG_INFO = HANDLER_MESSAGE_BASE+1;
-    private static final int COMPUTE_BULK_SIZE = HANDLER_MESSAGE_BASE+2;
-    private static final int REMOVE_PKG = HANDLER_MESSAGE_BASE+3;
-    private static final int REORDER_LIST = HANDLER_MESSAGE_BASE+4;
-    private static final int ADD_PKG_START = HANDLER_MESSAGE_BASE+5;
-    private static final int ADD_PKG_DONE = HANDLER_MESSAGE_BASE+6;
-    private static final int REFRESH_LABELS = HANDLER_MESSAGE_BASE+7;
-    private static final int REFRESH_DONE = HANDLER_MESSAGE_BASE+8;
-    private static final int NEXT_LOAD_STEP = HANDLER_MESSAGE_BASE+9;
-    private static final int COMPUTE_END = HANDLER_MESSAGE_BASE+10;
-    private static final int REFRESH_ICONS = HANDLER_MESSAGE_BASE+11;
-    
-    // observer object used for computing pkg sizes
-    private PkgSizeObserver mObserver;
-    // local handle to PackageManager
-    private PackageManager mPm;
-    // Broadcast Receiver object that receives notifications for added/deleted
-    // packages
-    private PackageIntentReceiver mReceiver;
-    // atomic variable used to track if computing pkg sizes is in progress. should be volatile?
-    
-    private boolean mComputeSizesFinished = false;
-    // default icon thats used when displaying applications initially before resource info is
-    // retrieved
-    private static Drawable mDefaultAppIcon;
-    
-    // temporary dialog displayed while the application info loads
-    private static final int DLG_BASE = 0;
-    private static final int DLG_LOADING = DLG_BASE + 1;
-    
-    // Size resource used for packages whose size computation failed for some reason
-    private CharSequence mInvalidSizeStr;
-    private CharSequence mComputingSizeStr;
-    
-    // map used to store list of added and removed packages. Immutable Boolean
-    // variables indicate if a package has been added or removed. If a package is
-    // added or deleted multiple times a single entry with the latest operation will
-    // be recorded in the map.
-    private Map<String, Boolean> mAddRemoveMap;
-    
-    // layout inflater object used to inflate views
-    private LayoutInflater mInflater;
-    
-    // invalid size value used initially and also when size retrieval through PackageManager
-    // fails for whatever reason
-    private static final int SIZE_INVALID = -1;
-    
-    // debug boolean variable to test delays from PackageManager API's
-    private boolean DEBUG_PKG_DELAY = false;
-    
-    // Thread to load resources
-    ResourceLoaderThread mResourceThread;
-    private TaskRunner mSizeComputor;
-    
-    private String mCurrentPkgName;
-    
-    // Cache application attributes
-    private AppInfoCache mCache = new AppInfoCache();
-    
-    // Boolean variables indicating state
-    private boolean mLoadLabelsFinished = false;
-    private boolean mSizesFirst = false;
-    // ListView used to display list
-    private ListView mListView;
-    // State variables used to figure out menu options and also
-    // initiate the first computation and loading of resources
-    private boolean mJustCreated = true;
-    private boolean mFirst = false;
-    private long mLoadTimeStart;
-    private boolean mSetListViewLater = true;
-    
-    /*
-     * Handler class to handle messages for various operations.
-     * Most of the operations that effect Application related data
-     * are posted as messages to the handler to avoid synchronization
-     * when accessing these structures.
-     * 
-     * When the size retrieval gets kicked off for the first time, a COMPUTE_PKG_SIZE_START
-     * message is posted to the handler which invokes the getSizeInfo for the pkg at index 0.
-     * 
-     * When the PackageManager's asynchronous call back through
-     * PkgSizeObserver.onGetStatsCompleted gets invoked, the application resources like
-     * label, description, icon etc., are loaded in the same thread and these values are
-     * set on the observer.  The observer then posts a COMPUTE_PKG_SIZE_DONE message
-     * to the handler.  This information is updated on the AppInfoAdapter associated with
-     * the list view of this activity and size info retrieval is initiated for the next package as 
-     * indicated by mComputeIndex.
-     * 
-     * When a package gets added while the activity has focus, the PkgSizeObserver posts
-     * ADD_PKG_START message to the handler.  If the computation is not in progress, the size
-     * is retrieved for the newly added package through the observer object and the newly
-     * installed app info is updated on the screen.  If the computation is still in progress
-     * the package is added to an internal structure and action deferred till the computation
-     * is done for all the packages.
-     * 
-     * When a package gets deleted, REMOVE_PKG is posted to the handler
-     * if computation is not in progress (as indicated by
-     * mDoneIniting), the package is deleted from the displayed list of apps.  If computation is
-     * still in progress the package is added to an internal structure and action deferred till
-     * the computation is done for all packages.
-     * 
-     * When the sizes of all packages is computed, the newly
-     * added or removed packages are processed in order.
-     * If the user changes the order in which these applications are viewed by hitting the
-     * menu key, REORDER_LIST message is posted to the handler. this sorts the list
-     * of items based on the sort order.
-     */
-    private Handler mHandler = new Handler() {
-        public void handleMessage(Message msg) {
-            boolean status;
-            long size;
-            String formattedSize;
-            ApplicationInfo info;
-            Bundle data;
-            String pkgName = null;
-            AppInfo appInfo;
-            data = msg.getData();
-            if(data != null) {
-                pkgName = data.getString(ATTR_PKG_NAME);
-            }
-            switch (msg.what) {
-            case INIT_PKG_INFO:
-                if(localLOGV) Log.i(TAG, "Message INIT_PKG_INFO, justCreated = " + mJustCreated);
-                List<ApplicationInfo> newList = null;
-                if (!mJustCreated) {
-                    if (localLOGV) Log.i(TAG, "List already created");
-                    // Add or delete newly created packages by comparing lists
-                    newList = getInstalledApps(FILTER_APPS_ALL);
-                    updateAppList(newList);
-                }
-                // Retrieve the package list and init some structures
-                initAppList(newList, mFilterApps);
-                mHandler.sendEmptyMessage(NEXT_LOAD_STEP);
-                break;
-            case COMPUTE_BULK_SIZE:
-                if(localLOGV) Log.i(TAG, "Message COMPUTE_BULK_PKG_SIZE");
-                String[] pkgs = data.getStringArray(ATTR_PKGS);
-                long[] sizes = data.getLongArray(ATTR_STATS);
-                String[] formatted = data.getStringArray(ATTR_SIZE_STRS);
-                if(pkgs == null || sizes == null || formatted == null) {
-                     Log.w(TAG, "Ignoring message");
-                     break;
-                }
-                mAppInfoAdapter.bulkUpdateSizes(pkgs, sizes, formatted);
-                break;
-            case COMPUTE_END:
-                mComputeSizesFinished = true;
-                mFirst = true;
-                mHandler.sendEmptyMessage(NEXT_LOAD_STEP);
-                break;
-            case REMOVE_PKG:
-                if(localLOGV) Log.i(TAG, "Message REMOVE_PKG");
-                if(pkgName == null) {
-                    Log.w(TAG, "Ignoring message:REMOVE_PKG for null pkgName");
-                    break;
-                }
-                if (!mComputeSizesFinished) {
-                    Boolean currB = mAddRemoveMap.get(pkgName);
-                    if (currB == null || (currB.equals(Boolean.TRUE))) {
-                        mAddRemoveMap.put(pkgName, Boolean.FALSE);
-                    }
-                    break;
-                }
-                List<String> pkgList = new ArrayList<String>();
-                pkgList.add(pkgName);
-                mAppInfoAdapter.removeFromList(pkgList);
-                break;
-            case REORDER_LIST:
-                if(localLOGV) Log.i(TAG, "Message REORDER_LIST");
-                int menuOption = msg.arg1;
-                if((menuOption == SORT_ORDER_ALPHA) || 
-                        (menuOption == SORT_ORDER_SIZE)) {
-                    // Option to sort list
-                    if (menuOption != mSortOrder) {
-                        mSortOrder = menuOption;
-                        if (localLOGV) Log.i(TAG, "Changing sort order to "+mSortOrder);
-                        mAppInfoAdapter.sortList(mSortOrder);
-                    }
-                } else if(menuOption != mFilterApps) {
-                    // Option to filter list
-                    mFilterApps = menuOption;
-                    boolean ret = mAppInfoAdapter.resetAppList(mFilterApps);
-                    if(!ret) {
-                        // Reset cache
-                        mFilterApps = FILTER_APPS_ALL;
-                        mHandler.sendEmptyMessage(INIT_PKG_INFO);
-                        sendMessageToHandler(REORDER_LIST, menuOption);
-                    }
-                }
-                break;
-            case ADD_PKG_START:
-                if(localLOGV) Log.i(TAG, "Message ADD_PKG_START");
-                if(pkgName == null) {
-                    Log.w(TAG, "Ignoring message:ADD_PKG_START for null pkgName");
-                    break;
-                }
-                if (!mComputeSizesFinished || !mLoadLabelsFinished) {
-                    Boolean currB = mAddRemoveMap.get(pkgName);
-                    if (currB == null || (currB.equals(Boolean.FALSE))) {
-                        mAddRemoveMap.put(pkgName, Boolean.TRUE);
-                    }
-                    break;
-                }
-                try {
-                    info = mPm.getApplicationInfo(pkgName, 0);
-                } catch (NameNotFoundException e) {
-                    Log.w(TAG, "Couldnt find application info for:"+pkgName);
-                    break;
-                }
-                mObserver.invokeGetSizeInfo(pkgName);
-                break;
-            case ADD_PKG_DONE:
-                if(localLOGV) Log.i(TAG, "Message ADD_PKG_DONE");
-                if(pkgName == null) {
-                    Log.w(TAG, "Ignoring message:ADD_PKG_START for null pkgName");
-                    break;
-                }
-                status = data.getBoolean(ATTR_GET_SIZE_STATUS);
-                if (status) {
-                    size = data.getLong(ATTR_PKG_STATS);
-                    formattedSize = data.getString(ATTR_PKG_SIZE_STR);
-                    if (!mAppInfoAdapter.isInstalled(pkgName)) {
-                        mAppInfoAdapter.addToList(pkgName, size, formattedSize);
-                    } else {
-                        mAppInfoAdapter.updatePackage(pkgName, size, formattedSize);
-                    }
-                }
-                break;
-            case REFRESH_LABELS:
-                Map<String, CharSequence> labelMap = (Map<String, CharSequence>) msg.obj;
-                if (labelMap != null) {
-                    mAppInfoAdapter.bulkUpdateLabels(labelMap);
-                }
-                break;
-            case REFRESH_ICONS:
-                Map<String, Drawable> iconMap = (Map<String, Drawable>) msg.obj;
-                if (iconMap != null) {
-                    mAppInfoAdapter.bulkUpdateIcons(iconMap);
-                }
-                break;
-            case REFRESH_DONE:
-                mLoadLabelsFinished = true;
-                mHandler.sendEmptyMessage(NEXT_LOAD_STEP);
-                break;
-            case NEXT_LOAD_STEP:
-                if (!mCache.isEmpty() && mSetListViewLater) {
-                    if (localLOGV) Log.i(TAG, "Using cache to populate list view");
-                    initListView();
-                    mSetListViewLater = false;
-                    mFirst = true;
-                }
-                if (mComputeSizesFinished && mLoadLabelsFinished) {
-                    doneLoadingData();
-                    // Check for added/removed packages
-                    Set<String> keys =  mAddRemoveMap.keySet();
-                    for (String key : keys) {
-                        if (mAddRemoveMap.get(key) == Boolean.TRUE) {
-                            // Add the package
-                            updatePackageList(Intent.ACTION_PACKAGE_ADDED, key);
-                        } else {
-                            // Remove the package
-                            updatePackageList(Intent.ACTION_PACKAGE_REMOVED, key);
-                        }
-                    }
-                    mAddRemoveMap.clear();
-                } else if (!mComputeSizesFinished && !mLoadLabelsFinished) {
-                     // Either load the package labels or initiate get size info
-                    if (mSizesFirst) {
-                        initComputeSizes();
-                    } else {
-                        initResourceThread();
-                    }
-                } else {
-                    if (mSetListViewLater) {
-                        if (localLOGV) Log.i(TAG, "Initing list view for very first time");
-                        initListView();
-                        mSetListViewLater = false;
-                    }
-                    if (!mComputeSizesFinished) {
-                        initComputeSizes();
-                    } else if (!mLoadLabelsFinished) {
-                        initResourceThread();
-                    }
-                }
-                break;
-            default:
-                break;
-            }
-        }
-    };
-    
-    private void initListView() {
-       // Create list view from the adapter here. Wait till the sort order
-        // of list is defined. its either by label or by size. So atleast one of the
-        // first steps should have been completed before the list gets filled.
-        mAppInfoAdapter.sortBaseList(mSortOrder);
-        if (mJustCreated) {
-            // Set the adapter here.
-            mJustCreated = false;
-            mListView.setAdapter(mAppInfoAdapter);
-            dismissLoadingMsg();
-        }
-    }
-
-   class SizeObserver extends IPackageStatsObserver.Stub {
-       private CountDownLatch mCount;
-       PackageStats stats;
-       boolean succeeded;
-       
-       public void invokeGetSize(String packageName, CountDownLatch count) {
-           mCount = count;
-           mPm.getPackageSizeInfo(packageName, this);
-       }
-       
-        public void onGetStatsCompleted(PackageStats pStats, boolean pSucceeded) {
-            succeeded = pSucceeded;
-            stats = pStats;
-            mCount.countDown();
-        }
-    }
-
-    class TaskRunner extends Thread {
-        private List<ApplicationInfo> mPkgList;
-        private SizeObserver mSizeObserver;
-        private static final int END_MSG = COMPUTE_END;
-        private static final int SEND_PKG_SIZES = COMPUTE_BULK_SIZE;
-        volatile boolean abort = false;
-        static final int MSG_PKG_SIZE = 8;
-        
-        TaskRunner(List<ApplicationInfo> appList) {
-           mPkgList = appList;
-           mSizeObserver = new SizeObserver();
-           start();
-        }
-        
-        public void setAbort() {
-            abort = true;
-        }
-
-        public void run() {
-            long startTime;
-            if (DEBUG_SIZE || DEBUG_TIME) {
-               startTime =  SystemClock.elapsedRealtime();
-            }
-            int size = mPkgList.size();
-            int numMsgs = size / MSG_PKG_SIZE;
-            if (size > (numMsgs * MSG_PKG_SIZE)) {
-                numMsgs++;
-            }
-            int endi = 0;
-            for (int j = 0; j < size; j += MSG_PKG_SIZE) {
-                long sizes[];
-                String formatted[];
-                String packages[];
-                endi += MSG_PKG_SIZE;
-                if (endi > size) {
-                    endi = size;
-                }
-                sizes = new long[endi-j];
-                formatted = new String[endi-j];
-                packages = new String[endi-j];
-                for (int i = j; i < endi; i++) {
-                    if (abort) {
-                        // Exit if abort has been set.
-                        break;
-                    }
-                    CountDownLatch count = new CountDownLatch(1);
-                    String packageName = mPkgList.get(i).packageName;
-                    mSizeObserver.invokeGetSize(packageName, count);
-                    try {
-                        count.await();
-                    } catch (InterruptedException e) {
-                        Log.i(TAG, "Failed computing size for pkg : "+packageName);
-                    }
-                    // Process the package statistics
-                    PackageStats pStats = mSizeObserver.stats;
-                    boolean succeeded = mSizeObserver.succeeded;
-                    long total;
-                    if(succeeded && pStats != null) {
-                        total = getTotalSize(pStats);
-                    } else {
-                        total = SIZE_INVALID;
-                    }
-                    sizes[i-j] = total;
-                    formatted[i-j] = getSizeStr(total).toString();
-                    packages[i-j] = packageName;
-                }
-                // Post update message
-                Bundle data = new Bundle();
-                data.putStringArray(ATTR_PKGS, packages);
-                data.putLongArray(ATTR_STATS, sizes);
-                data.putStringArray(ATTR_SIZE_STRS, formatted);
-                Message msg = mHandler.obtainMessage(SEND_PKG_SIZES, data);
-                msg.setData(data);
-                mHandler.sendMessage(msg);
-            }
-            if (DEBUG_SIZE || DEBUG_TIME) Log.i(TAG, "Took "+
-                    (SystemClock.elapsedRealtime() - startTime)+
-                    " ms to compute sizes of all packages ");
-            mHandler.sendEmptyMessage(END_MSG);
-        }
-    }
-    
-    /*
-     * This method compares the current cache against a new list of
-     * installed applications and tries to update the list with add or remove
-     * messages.
-     */
-    private boolean updateAppList(List<ApplicationInfo> newList) {
-        if ((newList == null) || mCache.isEmpty()) {
-            return false;
-        }
-        Set<String> existingList = new HashSet<String>();
-        boolean ret = false;
-        // Loop over new list and find out common elements between old and new lists
-        int N = newList.size();
-        for (int i = (N-1); i >= 0; i--) {
-            ApplicationInfo info = newList.get(i);
-            String pkgName = info.packageName;
-            AppInfo aInfo = mCache.getEntry(pkgName);
-            if (aInfo != null) {
-                existingList.add(pkgName);
-            } else {
-                // New package. update info by refreshing
-                if (localLOGV) Log.i(TAG, "New pkg :"+pkgName+" installed when paused");
-                updatePackageList(Intent.ACTION_PACKAGE_ADDED, pkgName);
-                // Remove from current list so that the newly added package can
-                // be handled later
-                newList.remove(i);
-                ret = true;
-            }
-        }
-
-        // Loop over old list and figure out stale entries
-        List<String> deletedList = null;
-        Set<String> staleList = mCache.getPkgList();
-        for (String pkgName : staleList) {
-            if (!existingList.contains(pkgName)) {
-                if (localLOGV) Log.i(TAG, "Pkg :"+pkgName+" deleted when paused");
-                if (deletedList == null) {
-                    deletedList = new ArrayList<String>();
-                    deletedList.add(pkgName);
-                }
-                ret = true;
-            }
-        }
-        // Delete right away
-        if (deletedList != null) {
-            if (localLOGV) Log.i(TAG, "Deleting right away");
-            mAppInfoAdapter.removeFromList(deletedList);
-        }
-        return ret;
-    }
-    
-    private void doneLoadingData() {
-        setProgressBarIndeterminateVisibility(false);
-    }
-    
-    List<ApplicationInfo> getInstalledApps(int filterOption) {
-        List<ApplicationInfo> installedAppList = mPm.getInstalledApplications(
-                PackageManager.GET_UNINSTALLED_PACKAGES);
-        if (installedAppList == null) {
-            return new ArrayList<ApplicationInfo> ();
-        }
-        if (filterOption == FILTER_APPS_SDCARD) {
-            List<ApplicationInfo> appList =new ArrayList<ApplicationInfo> ();
-            for (ApplicationInfo appInfo : installedAppList) {
-                if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
-                    // App on sdcard
-                    appList.add(appInfo);
-                }
-            }
-            return appList;
-        } else if (filterOption == FILTER_APPS_THIRD_PARTY) {
-            List<ApplicationInfo> appList =new ArrayList<ApplicationInfo> ();
-            for (ApplicationInfo appInfo : installedAppList) {
-                boolean flag = false;
-                if ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
-                    // Updated system app
-                    flag = true;
-                } else if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
-                    // Non-system app
-                    flag = true;
-                }
-                if (flag) {
-                    appList.add(appInfo);
-                }
-            }
-            return appList;
-        } else if (filterOption == FILTER_APPS_RUNNING) {
-            List<ApplicationInfo> appList =new ArrayList<ApplicationInfo> ();
-            List<ActivityManager.RunningAppProcessInfo> procList = getRunningAppProcessesList();
-            if ((procList == null) || (procList.size() == 0)) {
-                return appList;
-            }
-            // Retrieve running processes from ActivityManager
-            for (ActivityManager.RunningAppProcessInfo appProcInfo : procList) {
-                if ((appProcInfo != null)  && (appProcInfo.pkgList != null)){
-                    int size = appProcInfo.pkgList.length;
-                    for (int i = 0; i < size; i++) {
-                        ApplicationInfo appInfo = null;
-                        try {
-                            appInfo = mPm.getApplicationInfo(appProcInfo.pkgList[i], 
-                                    PackageManager.GET_UNINSTALLED_PACKAGES);
-                        } catch (NameNotFoundException e) {
-                           Log.w(TAG, "Error retrieving ApplicationInfo for pkg:"+appProcInfo.pkgList[i]);
-                           continue;
-                        }
-                        if(appInfo != null) {
-                            appList.add(appInfo);
-                        }
-                    }
-                }
-            }
-            return appList;
-        } else {
-            return installedAppList;
-        }
-    }
-
-    private static boolean matchFilter(boolean filter, Map<String, String> filterMap, String pkg) {
-        boolean add = true;
-        if (filter) {
-            if (filterMap == null || !filterMap.containsKey(pkg)) {
-                add = false;
-            }
-        }
-        return add;
-    }
-    
-    /*
-     * Utility method used to figure out list of apps based on filterOption
-     * If the framework supports an additional flag to indicate running apps
-     *  we can get away with some code here.
-     */
-    List<ApplicationInfo> getFilteredApps(List<ApplicationInfo> pAppList, int filterOption, boolean filter,
-            Map<String, String> filterMap) {
-        List<ApplicationInfo> retList = new ArrayList<ApplicationInfo>();
-        if(pAppList == null) {
-            return retList;
-        }
-        if (filterOption == FILTER_APPS_SDCARD) {
-            for (ApplicationInfo appInfo : pAppList) {
-                boolean flag = false;
-                if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
-                    // App on sdcard
-                    flag = true;
-                }
-                if (flag) {
-                    if (matchFilter(filter, filterMap, appInfo.packageName)) {
-                        retList.add(appInfo);
-                    }
-                }
-            }
-            return retList;
-        } else if (filterOption == FILTER_APPS_THIRD_PARTY) {
-            for (ApplicationInfo appInfo : pAppList) {
-                boolean flag = false;
-                if ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
-                    // Updated system app
-                    flag = true;
-                } else if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
-                    // Non-system app
-                    flag = true;
-                }
-                if (flag) {
-                    if (matchFilter(filter, filterMap, appInfo.packageName)) {
-                        retList.add(appInfo);
-                    }
-                }
-            }
-            return retList;
-        } else if (filterOption == FILTER_APPS_RUNNING) {
-            List<ActivityManager.RunningAppProcessInfo> procList = getRunningAppProcessesList();
-            if ((procList == null) || (procList.size() == 0)) {
-                return retList;
-            }
-            // Retrieve running processes from ActivityManager
-            HashMap<String, ActivityManager.RunningAppProcessInfo> runningMap = 
-                new HashMap<String, ActivityManager.RunningAppProcessInfo>();
-            for (ActivityManager.RunningAppProcessInfo appProcInfo : procList) {
-                if ((appProcInfo != null)  && (appProcInfo.pkgList != null)){
-                    int size = appProcInfo.pkgList.length;
-                    for (int i = 0; i < size; i++) {
-                        runningMap.put(appProcInfo.pkgList[i], appProcInfo);
-                    }
-                }
-            }
-            // Query list to find running processes in current list
-            for (ApplicationInfo appInfo : pAppList) {
-                if (runningMap.get(appInfo.packageName) != null) {
-                    if (matchFilter(filter, filterMap, appInfo.packageName)) {
-                        retList.add(appInfo);
-                    }
-                }
-            }
-            return retList;
-        } else {
-            for (ApplicationInfo appInfo : pAppList) {
-                if (matchFilter(filter, filterMap, appInfo.packageName)) {
-                    retList.add(appInfo);
-                }
-            }
-            return retList;
-        }
-    }
-
-    private List<ActivityManager.RunningAppProcessInfo> getRunningAppProcessesList() {
-        ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
-        return am.getRunningAppProcesses();
-    }
-
-     // Some initialization code used when kicking off the size computation
-    private void initAppList(List<ApplicationInfo> appList, int filterOption) {
-        setProgressBarIndeterminateVisibility(true);
-        mComputeSizesFinished = false;
-        mLoadLabelsFinished = false;
-        // Initialize lists
-        mAddRemoveMap = new TreeMap<String, Boolean>();
-        mAppInfoAdapter.initMapFromList(appList, filterOption);
-    }
-
-    // Utility method to start a thread to read application labels and icons
-    private void initResourceThread() {
-        if ((mResourceThread != null) && mResourceThread.isAlive()) {
-            mResourceThread.setAbort();
-        }
-        mResourceThread = new ResourceLoaderThread();
-        List<ApplicationInfo> appList = mAppInfoAdapter.getBaseAppList();
-        if ((appList != null) && (appList.size()) > 0) {
-            mResourceThread.loadAllResources(appList);
-        }
-    }
-
-    private void initComputeSizes() {
-         // Initiate compute package sizes
-        if (localLOGV) Log.i(TAG, "Initiating compute sizes for first time");
-        if ((mSizeComputor != null) && (mSizeComputor.isAlive())) {
-            mSizeComputor.setAbort();
-        }
-        List<ApplicationInfo> appList = mAppInfoAdapter.getBaseAppList();
-        if ((appList != null) && (appList.size()) > 0) {
-            mSizeComputor = new TaskRunner(appList);
-        } else {
-            mComputeSizesFinished = true;
-        }
-    }
-    
-    // internal structure used to track added and deleted packages when
-    // the activity has focus
-    static class AddRemoveInfo {
-        String pkgName;
-        boolean add;
-        public AddRemoveInfo(String pPkgName, boolean pAdd) {
-            pkgName = pPkgName;
-            add = pAdd;
-        }
-    }
-    
-    class ResourceLoaderThread extends Thread {
-        List<ApplicationInfo> mAppList;
-        volatile boolean abort = false;
-        static final int MSG_PKG_SIZE = 8;
-        
-        public void setAbort() {
-            abort = true;
-        }
-        void loadAllResources(List<ApplicationInfo> appList) {
-            mAppList = appList;
-            start();
-        }
-
-        public void run() {
-            long start;
-            if (DEBUG_TIME) {
-                start = SystemClock.elapsedRealtime();
-            }
-            int imax;
-            if(mAppList == null || (imax = mAppList.size()) <= 0) {
-                Log.w(TAG, "Empty or null application list");
-            } else {
-                int size = mAppList.size();
-                int numMsgs = size / MSG_PKG_SIZE;
-                if (size > (numMsgs * MSG_PKG_SIZE)) {
-                    numMsgs++;
-                }
-                int endi = 0;
-                for (int j = 0; j < size; j += MSG_PKG_SIZE) {
-                    Map<String, CharSequence> map = new HashMap<String, CharSequence>();
-                    endi += MSG_PKG_SIZE;
-                    if (endi > size) {
-                        endi = size;
-                    }
-                    for (int i = j; i < endi; i++) {
-                        if (abort) {
-                            // Exit if abort has been set.
-                            break;
-                        }
-                        ApplicationInfo appInfo = mAppList.get(i);
-                        map.put(appInfo.packageName, appInfo.loadLabel(mPm));
-                    }
-                    // Post update message
-                    Message msg = mHandler.obtainMessage(REFRESH_LABELS);
-                    msg.obj = map;
-                    mHandler.sendMessage(msg);
-                }
-                Message doneMsg = mHandler.obtainMessage(REFRESH_DONE);
-                mHandler.sendMessage(doneMsg);
-                if (DEBUG_TIME) Log.i(TAG, "Took "+(SystemClock.elapsedRealtime()-start)+
-                        " ms to load app labels");
-                long startIcons;
-                if (DEBUG_TIME) {
-                    startIcons = SystemClock.elapsedRealtime();
-                }
-                Map<String, Drawable> map = new HashMap<String, Drawable>();
-                for (int i = (imax-1); i >= 0; i--) {
-                    if (abort) {
-                        return;
-                    }
-                    ApplicationInfo appInfo = mAppList.get(i);
-                    map.put(appInfo.packageName, appInfo.loadIcon(mPm));
-                }
-                Message msg = mHandler.obtainMessage(REFRESH_ICONS);
-                msg.obj = map;
-                mHandler.sendMessage(msg);
-                if (DEBUG_TIME) Log.i(TAG, "Took "+(SystemClock.elapsedRealtime()-startIcons)+" ms to load app icons");
-            }
-            if (DEBUG_TIME) Log.i(TAG, "Took "+(SystemClock.elapsedRealtime()-start)+" ms to load app resources");
-        }
-    }
-    
-    /* Internal class representing an application or packages displayable attributes
-     * 
-     */
-    static private class AppInfo {
-        public String pkgName;
-        int index;
-        public CharSequence appName;
-        public Drawable appIcon;
-        public CharSequence appSize;
-        long size;
-
-        public void refreshIcon(Drawable icon) {
-            if (icon == null) {
-                return;
-            }
-            appIcon = icon;
-        }
-        public void refreshLabel(CharSequence label) {
-            if (label == null) {
-                return;
-            }
-            appName = label;
-        }
-
-        public AppInfo(String pName, int pIndex, CharSequence aName,
-                long pSize,
-                CharSequence pSizeStr) {
-            this(pName, pIndex, aName, mDefaultAppIcon, pSize, pSizeStr);
-        }
- 
-        public AppInfo(String pName, int pIndex, CharSequence aName, Drawable aIcon,
-                long pSize,
-                CharSequence pSizeStr) {
-            index = pIndex;
-            pkgName = pName;
-            appName = aName;
-            appIcon = aIcon;
-            size = pSize;
-            appSize = pSizeStr;
-        }
- 
-        public boolean setSize(long newSize, String formattedSize) {
-            if (size != newSize) {
-                size = newSize;
-                appSize = formattedSize;
-                return true;
-            }
-            return false;
-        }
-    }
-    
-    private long getTotalSize(PackageStats ps) {
-        if (ps != null) {
-            return ps.cacheSize+ps.codeSize+ps.dataSize;
-        }
-        return SIZE_INVALID;
-    }
-
-    private CharSequence getSizeStr(long size) {
-        CharSequence appSize = null;
-        if (size == SIZE_INVALID) {
-             return mInvalidSizeStr;
-        }
-        appSize = Formatter.formatFileSize(ManageApplications.this, size);
-        return appSize;
-    }
-
-    // View Holder used when displaying views
-    static class AppViewHolder {
-        TextView appName;
-        ImageView appIcon;
-        TextView appSize;
-    }
-    
-    /* 
-     * Custom adapter implementation for the ListView
-     * This adapter maintains a map for each displayed application and its properties
-     * An index value on each AppInfo object indicates the correct position or index
-     * in the list. If the list gets updated dynamically when the user is viewing the list of
-     * applications, we need to return the correct index of position. This is done by mapping
-     * the getId methods via the package name into the internal maps and indices.
-     * The order of applications in the list is mirrored in mAppLocalList
-     */
-    class AppInfoAdapter extends BaseAdapter implements Filterable {   
-        private List<ApplicationInfo> mAppList;
-        private List<ApplicationInfo> mAppLocalList;
-        private Map<String, String> mFilterMap = new HashMap<String, String>();
-        AlphaComparator mAlphaComparator = new AlphaComparator();
-        SizeComparator mSizeComparator = new SizeComparator();
-        private Filter mAppFilter = new AppFilter();
-        final private Object mFilterLock = new Object();
-        private Map<String, String> mCurrentFilterMap = null;
-
-        private void generateFilterListLocked(List<ApplicationInfo> list) {
-            mAppLocalList = new ArrayList<ApplicationInfo>(list);
-            synchronized(mFilterLock) {
-                for (ApplicationInfo info : mAppLocalList) {
-                    String label = info.packageName;
-                    AppInfo aInfo = mCache.getEntry(info.packageName);
-                    if ((aInfo != null) && (aInfo.appName != null)) {
-                        label = aInfo.appName.toString();
-                    }
-                    mFilterMap.put(info.packageName, label.toLowerCase());
-                }
-            }
-        }
-
-        private void addFilterListLocked(int newIdx, ApplicationInfo info, CharSequence pLabel) {
-            mAppLocalList.add(newIdx, info);
-            synchronized (mFilterLock) {
-                String label = info.packageName;
-                if (pLabel != null) {
-                    label = pLabel.toString();
-                }
-                mFilterMap.put(info.packageName, label.toLowerCase());
-            }
-        }
-
-        private boolean removeFilterListLocked(String removePkg) {
-            // Remove from filtered list
-            int N = mAppLocalList.size();
-            int i;
-            for (i = (N-1); i >= 0; i--) {
-                ApplicationInfo info = mAppLocalList.get(i);
-                if (info.packageName.equalsIgnoreCase(removePkg)) {
-                    if (localLOGV) Log.i(TAG, "Removing " + removePkg + " from local list");
-                    mAppLocalList.remove(i);
-                    synchronized (mFilterLock) {
-                        mFilterMap.remove(removePkg);
-                    }
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        private void reverseGenerateList() {
-            generateFilterListLocked(getFilteredApps(mAppList, mFilterApps, mCurrentFilterMap!= null, mCurrentFilterMap));
-            sortListInner(mSortOrder);
-        }
-
-        // Make sure the cache or map contains entries for all elements
-        // in appList for a valid sort.
-        public void initMapFromList(List<ApplicationInfo> pAppList, int filterOption) {
-            boolean notify = false;
-            List<ApplicationInfo> appList = null;
-            if (pAppList == null) {
-                // Just refresh the list
-                appList = mAppList;
-            } else {
-                mAppList = new ArrayList<ApplicationInfo>(pAppList);
-                appList = pAppList;
-                notify = true;
-            }
-            generateFilterListLocked(getFilteredApps(appList, filterOption, mCurrentFilterMap!= null, mCurrentFilterMap));
-            // This loop verifies and creates new entries for new packages in list
-            int imax = appList.size();
-            for (int i = 0; i < imax; i++) {
-                ApplicationInfo info  = appList.get(i);
-                AppInfo aInfo = mCache.getEntry(info.packageName);
-                if(aInfo == null){
-                    aInfo = new AppInfo(info.packageName, i, 
-                            info.packageName, -1, mComputingSizeStr);
-                    if (localLOGV) Log.i(TAG, "Creating entry pkg:"+info.packageName+" to map");
-                    mCache.addEntry(aInfo);
-                }
-            }
-            sortListInner(mSortOrder);
-            if (notify) {
-                notifyDataSetChanged();
-            }
-        }
-        
-        public AppInfoAdapter(Context c, List<ApplicationInfo> appList) {
-           mAppList = appList;
-        }
-        
-        public int getCount() {
-            return mAppLocalList.size();
-        }
-        
-        public Object getItem(int position) {
-            return mAppLocalList.get(position);
-        }
-        
-        public boolean isInstalled(String pkgName) {
-            if(pkgName == null) {
-                if (localLOGV) Log.w(TAG, "Null pkg name when checking if installed");
-                return false;
-            }
-            for (ApplicationInfo info : mAppList) {
-                if (info.packageName.equalsIgnoreCase(pkgName)) {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        public ApplicationInfo getApplicationInfo(int position) {
-            int imax = mAppLocalList.size();
-            if( (position < 0) || (position >= imax)) {
-                Log.w(TAG, "Position out of bounds in List Adapter");
-                return null;
-            }
-            return mAppLocalList.get(position);
-        }
-
-        public long getItemId(int position) {
-            int imax = mAppLocalList.size();
-            if( (position < 0) || (position >= imax)) {
-                Log.w(TAG, "Position out of bounds in List Adapter");
-                return -1;
-            }
-            AppInfo aInfo = mCache.getEntry(mAppLocalList.get(position).packageName);
-            if (aInfo == null) {
-                return -1;
-            }
-            return aInfo.index;
-        }
-        
-        public List<ApplicationInfo> getBaseAppList() {
-            return mAppList;
-        }
-        
-        public View getView(int position, View convertView, ViewGroup parent) {
-            if (position >= mAppLocalList.size()) {
-                Log.w(TAG, "Invalid view position:"+position+", actual size is:"+mAppLocalList.size());
-                return null;
-            }
-            // A ViewHolder keeps references to children views to avoid unnecessary calls
-            // to findViewById() on each row.
-            AppViewHolder holder;
-
-            // When convertView is not null, we can reuse it directly, there is no need
-            // to reinflate it. We only inflate a new View when the convertView supplied
-            // by ListView is null.
-            if (convertView == null) {
-                convertView = mInflater.inflate(R.layout.manage_applications_item, null);
-
-                // Creates a ViewHolder and store references to the two children views
-                // we want to bind data to.
-                holder = new AppViewHolder();
-                holder.appName = (TextView) convertView.findViewById(R.id.app_name);
-                holder.appIcon = (ImageView) convertView.findViewById(R.id.app_icon);
-                holder.appSize = (TextView) convertView.findViewById(R.id.app_size);
-                convertView.setTag(holder);
-            } else {
-                // Get the ViewHolder back to get fast access to the TextView
-                // and the ImageView.
-                holder = (AppViewHolder) convertView.getTag();
-            }
-
-            // Bind the data efficiently with the holder
-            ApplicationInfo appInfo = mAppLocalList.get(position);
-            AppInfo mInfo = mCache.getEntry(appInfo.packageName);
-            if(mInfo != null) {
-                if(mInfo.appName != null) {
-                    holder.appName.setText(mInfo.appName);
-                }
-                if(mInfo.appIcon != null) {
-                    holder.appIcon.setImageDrawable(mInfo.appIcon);
-                }
-                if (mInfo.appSize != null) {
-                    holder.appSize.setText(mInfo.appSize);
-                }
-            } else {
-                Log.w(TAG, "No info for package:"+appInfo.packageName+" in property map");
-            }
-            return convertView;
-        }
-        
-        private void adjustIndex() {
-            int imax = mAppLocalList.size();
-            for (int i = 0; i < imax; i++) {
-                ApplicationInfo info = mAppLocalList.get(i);
-                mCache.getEntry(info.packageName).index = i;
-            }
-        }
-        
-        public void sortAppList(List<ApplicationInfo> appList, int sortOrder) {
-            Collections.sort(appList, getAppComparator(sortOrder));
-        }
-        
-        public void sortBaseList(int sortOrder) {
-            if (localLOGV) Log.i(TAG, "Sorting base list based on sortOrder = "+sortOrder);
-            sortAppList(mAppList, sortOrder);
-            generateFilterListLocked(getFilteredApps(mAppList, mFilterApps, mCurrentFilterMap!= null, mCurrentFilterMap));
-            adjustIndex();
-        }
-
-        private void sortListInner(int sortOrder) {
-            sortAppList(mAppLocalList, sortOrder);
-            adjustIndex(); 
-        }
-        
-        public void sortList(int sortOrder) {
-            if (localLOGV) Log.i(TAG, "sortOrder = "+sortOrder);
-            sortListInner(sortOrder);
-            notifyDataSetChanged();
-        }
-        
-        /*
-         * Reset the application list associated with this adapter.
-         * @param filterOption Sort the list based on this value
-         * @param appList the actual application list that is used to reset
-         * @return Return a boolean value to indicate inconsistency
-         */
-        public boolean resetAppList(int filterOption) {
-           // Change application list based on filter option
-           generateFilterListLocked(getFilteredApps(mAppList, filterOption, mCurrentFilterMap!= null, mCurrentFilterMap));
-           // Check for all properties in map before sorting. Populate values from cache
-           for(ApplicationInfo applicationInfo : mAppLocalList) {
-               AppInfo appInfo = mCache.getEntry(applicationInfo.packageName);
-               if(appInfo == null) {
-                  Log.i(TAG, " Entry does not exist for pkg:  " + applicationInfo.packageName);
-               }
-           }
-           if (mAppLocalList.size() > 0) {
-               sortList(mSortOrder);
-           } else {
-               notifyDataSetChanged();
-           }
-           return true;
-        }
-        
-        private Comparator<ApplicationInfo> getAppComparator(int sortOrder) {
-            if (sortOrder == SORT_ORDER_ALPHA) {
-                return mAlphaComparator;
-            }
-            return mSizeComparator;
-        }
-
-        public void bulkUpdateIcons(Map<String, Drawable> icons) {
-            if (icons == null) {
-                return;
-            }
-            Set<String> keys = icons.keySet();
-            boolean changed = false;
-            for (String key : keys) {
-                Drawable ic = icons.get(key);
-                if (ic != null) {
-                    AppInfo aInfo = mCache.getEntry(key);
-                    if (aInfo != null) {
-                        aInfo.refreshIcon(ic);
-                        changed = true;
-                    }
-                }
-            }
-            if (changed) {
-                notifyDataSetChanged();
-            }
-        }
-
-        public void bulkUpdateLabels(Map<String, CharSequence> map) {
-            if (map == null) {
-                return;
-            }
-            Set<String> keys = map.keySet();
-            boolean changed = false;
-            for (String key : keys) {
-                CharSequence label = map.get(key);
-                AppInfo aInfo = mCache.getEntry(key);
-                if (aInfo != null) {
-                    aInfo.refreshLabel(label);
-                    changed = true;
-                }
-            }
-            if (changed) {
-                notifyDataSetChanged();
-            }
-        }
-
-        private boolean shouldBeInList(int filterOption, ApplicationInfo info) {
-            // Match filter here
-            if (filterOption == FILTER_APPS_RUNNING) {
-                List<ApplicationInfo> runningList = getInstalledApps(FILTER_APPS_RUNNING);
-                for (ApplicationInfo running : runningList) {
-                    if (running.packageName.equalsIgnoreCase(info.packageName)) {
-                        return true;
-                    }
-                }
-            } else if (filterOption == FILTER_APPS_THIRD_PARTY) {
-                if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
-                    return true;
-                } else if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
-                    return true;
-                }
-            } else if (filterOption == FILTER_APPS_SDCARD) {
-                if ((info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
-                    return true;
-                }
-            } else {
-                return true;
-            }
-            return false;
-        }
-        
-        /*
-         * Add a package to the current list.
-         * The package is only added to the displayed list
-         * based on the filter value. The package is always added to the property map.
-         * @param pkgName name of package to be added
-         * @param ps PackageStats of new package
-         */
-        public void addToList(String pkgName, long size, String formattedSize) {
-            if (pkgName == null) {
-                return;
-            }
-            // Get ApplicationInfo
-            ApplicationInfo info = null;
-            try {
-                info = mPm.getApplicationInfo(pkgName, 0);
-            } catch (NameNotFoundException e) {
-                Log.w(TAG, "Ignoring non-existent package:"+pkgName);
-                return;
-            }
-            if(info == null) {
-                // Nothing to do log error message and return
-                Log.i(TAG, "Null ApplicationInfo for package:"+pkgName);
-                return;
-            }
-            // Add entry to base list
-            mAppList.add(info);
-            // Add entry to map. Note that the index gets adjusted later on based on
-            // whether the newly added package is part of displayed list
-            CharSequence label = info.loadLabel(mPm);
-            mCache.addEntry(new AppInfo(pkgName, -1,
-                    label, info.loadIcon(mPm), size, formattedSize));
-            if (addLocalEntry(info, label)) {
-                notifyDataSetChanged();
-            }
-        }
-
-        private boolean addLocalEntry(ApplicationInfo info, CharSequence label) {
-            String pkgName = info.packageName;
-            // Add to list
-            if (shouldBeInList(mFilterApps, info)) {
-                // Binary search returns a negative index (ie -index) of the position where
-                // this might be inserted. 
-                int newIdx = Collections.binarySearch(mAppLocalList, info, 
-                        getAppComparator(mSortOrder));
-                if(newIdx >= 0) {
-                    if (localLOGV) Log.i(TAG, "Strange. Package:" + pkgName + " is not new");
-                    return false;
-                }
-                // New entry
-                newIdx = -newIdx-1;
-                addFilterListLocked(newIdx, info, label);
-                // Adjust index
-                adjustIndex();
-                return true;
-            }
-            return false;
-        }
-
-        public void updatePackage(String pkgName,
-                long size, String formattedSize) {
-            ApplicationInfo info = null;
-            try {
-                info = mPm.getApplicationInfo(pkgName,
-                        PackageManager.GET_UNINSTALLED_PACKAGES);
-            } catch (NameNotFoundException e) {
-                return;
-            }
-            AppInfo aInfo = mCache.getEntry(pkgName);
-            if (aInfo != null) {
-                CharSequence label = info.loadLabel(mPm);
-                aInfo.refreshLabel(label);
-                aInfo.refreshIcon(info.loadIcon(mPm));
-                aInfo.setSize(size, formattedSize);
-                // Check if the entry has to be added to the displayed list
-                addLocalEntry(info, label);
-                // Refresh list since size might have changed
-                notifyDataSetChanged();
-            }
-        }
-
-        private void removePkgBase(String pkgName) {
-            int imax = mAppList.size();
-            for (int i = 0; i < imax; i++) {
-                ApplicationInfo app = mAppList.get(i);
-                if (app.packageName.equalsIgnoreCase(pkgName)) {
-                    if (localLOGV) Log.i(TAG, "Removing pkg: "+pkgName+" from base list");
-                    mAppList.remove(i);
-                    return;
-                }
-            }
-        }
- 
-        public void removeFromList(List<String> pkgNames) {
-            if(pkgNames == null) {
-                return;
-            }
-            if(pkgNames.size()  <= 0) {
-                return;
-            }
-            boolean found = false;
-            for (String pkg : pkgNames) {
-                // Remove from the base application list
-                removePkgBase(pkg);
-                // Remove from cache
-                if (localLOGV) Log.i(TAG, "Removing " + pkg + " from cache");
-                mCache.removeEntry(pkg);
-                // Remove from filtered list
-                if (removeFilterListLocked(pkg)) {
-                    found = true;
-                }
-            }
-            // Adjust indices of list entries
-            if (found) {
-                adjustIndex();
-                if (localLOGV) Log.i(TAG, "adjusting index and notifying list view");
-                notifyDataSetChanged();
-            }
-        }
-
-        public void bulkUpdateSizes(String pkgs[], long sizes[], String formatted[]) {
-            if(pkgs == null || sizes == null || formatted == null) {
-                return;
-            }
-            boolean changed = false;
-            for (int i = 0; i < pkgs.length; i++) {
-                AppInfo entry = mCache.getEntry(pkgs[i]);
-                if (entry == null) {
-                    if (localLOGV) Log.w(TAG, "Entry for package:"+ pkgs[i] +"doesn't exist in map");
-                    continue;
-                }
-                if (entry.setSize(sizes[i], formatted[i])) {
-                    changed = true;
-                }
-            }
-            if (changed) {
-                notifyDataSetChanged();
-            }
-        }
-
-        public Filter getFilter() {
-            return mAppFilter;
-        }
-
-        private class AppFilter extends Filter {
-            @Override
-            protected FilterResults performFiltering(CharSequence prefix) {
-                FilterResults results = new FilterResults();
-                if (prefix == null || prefix.length() == 0) {
-                    synchronized (mFilterLock) {
-                        results.values = new HashMap<String, String>(mFilterMap);
-                        results.count = mFilterMap.size();
-                    }
-                } else {
-                    final String prefixString = prefix.toString().toLowerCase();
-                    final String spacePrefixString = " " + prefixString;
-                    Map<String, String> newMap = new HashMap<String, String>();
-                    synchronized (mFilterLock) {
-                        Map<String, String> localMap = mFilterMap;
-                        Set<String> keys = mFilterMap.keySet();
-                        for (String key : keys) {
-                            String label = localMap.get(key);
-                            if (label == null) continue;
-                            label = label.toLowerCase();
-                            if (label.startsWith(prefixString)
-                                    || label.indexOf(spacePrefixString) != -1) {
-                                newMap.put(key, label);
-                            }
-                        }
-                    }
-                    results.values = newMap;
-                    results.count = newMap.size();
-                }
-                return results;
-            }
-
-            @Override
-            protected void publishResults(CharSequence constraint, FilterResults results) {
-                mCurrentFilterMap = (Map<String, String>) results.values;
-                reverseGenerateList();
-                if (results.count > 0) {
-                    notifyDataSetChanged();
-                } else {
-                    notifyDataSetInvalidated();
-                }
-            }
-        }
-    }
-    
-    /*
-     * Utility method to clear messages to Handler
-     * We need'nt synchronize on the Handler since posting messages is guaranteed
-     * to be thread safe. Even if the other thread that retrieves package sizes
-     * posts a message, we do a cursory check of validity on mAppInfoAdapter's applist
-     */
-    private void clearMessagesInHandler() {
-        mHandler.removeMessages(INIT_PKG_INFO);
-        mHandler.removeMessages(COMPUTE_BULK_SIZE);
-        mHandler.removeMessages(REMOVE_PKG);
-        mHandler.removeMessages(REORDER_LIST);
-        mHandler.removeMessages(ADD_PKG_START);
-        mHandler.removeMessages(ADD_PKG_DONE);
-        mHandler.removeMessages(REFRESH_LABELS);
-        mHandler.removeMessages(REFRESH_DONE);
-        mHandler.removeMessages(NEXT_LOAD_STEP);
-        mHandler.removeMessages(COMPUTE_END);
-    }
-    
-    private void sendMessageToHandler(int msgId, int arg1) {
-        Message msg = mHandler.obtainMessage(msgId);
-        msg.arg1 = arg1;
-        mHandler.sendMessage(msg);
-    }
-    
-    private void sendMessageToHandler(int msgId, Bundle data) {
-        Message msg = mHandler.obtainMessage(msgId);
-        msg.setData(data);
-        mHandler.sendMessage(msg);
-    }
-    
-    private void sendMessageToHandler(int msgId) {
-        mHandler.sendEmptyMessage(msgId);
-    }
-    
-    /*
-     * Stats Observer class used to compute package sizes and retrieve size information
-     * PkgSizeOberver is the call back thats used when invoking getPackageSizeInfo on
-     * PackageManager. The values in call back onGetStatsCompleted are validated
-     * and the specified message is passed to mHandler. The package name
-     * and the AppInfo object corresponding to the package name are set on the message
-     */
-    class PkgSizeObserver extends IPackageStatsObserver.Stub {
-        String pkgName;
-        public void onGetStatsCompleted(PackageStats pStats, boolean pSucceeded) {
-            if(DEBUG_PKG_DELAY) {
-                try {
-                    Thread.sleep(10*1000);
-                } catch (InterruptedException e) {
-                }
-            }
-            Bundle data = new Bundle();
-            data.putString(ATTR_PKG_NAME, pkgName);
-            data.putBoolean(ATTR_GET_SIZE_STATUS, pSucceeded);
-            if(pSucceeded && pStats != null) {
-                if (localLOGV) Log.i(TAG, "onGetStatsCompleted::"+pkgName+", ("+
-                        pStats.cacheSize+","+
-                        pStats.codeSize+", "+pStats.dataSize);
-                long total = getTotalSize(pStats);
-                data.putLong(ATTR_PKG_STATS, total);
-                CharSequence sizeStr = getSizeStr(total);
-                data.putString(ATTR_PKG_SIZE_STR, sizeStr.toString());
-            } else {
-                Log.w(TAG, "Invalid package stats from PackageManager");
-            }
-            // Post message to Handler
-            Message msg = mHandler.obtainMessage(ADD_PKG_DONE, data);
-            msg.setData(data);
-            mHandler.sendMessage(msg);
-        }
-
-        public void invokeGetSizeInfo(String packageName) {
-            if (packageName == null) {
-                return;
-            }
-            pkgName = packageName;
-            if(localLOGV) Log.i(TAG, "Invoking getPackageSizeInfo for package:"+
-                    packageName);
-            mPm.getPackageSizeInfo(packageName, this);
-        }
-    }
-    
-    /**
-     * Receives notifications when applications are added/removed.
-     */
-    private class PackageIntentReceiver extends BroadcastReceiver {
-         void registerReceiver() {
-             IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
-             filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
-             filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
-             filter.addDataScheme("package");
-             ManageApplications.this.registerReceiver(this, filter);
-             // Register for events related to sdcard installation.
-             IntentFilter sdFilter = new IntentFilter();
-             sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
-             sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
-             ManageApplications.this.registerReceiver(this, sdFilter);
-         }
-         @Override
-         public void onReceive(Context context, Intent intent) {
-             String actionStr = intent.getAction();
-             if (Intent.ACTION_PACKAGE_ADDED.equals(actionStr) ||
-                     Intent.ACTION_PACKAGE_REMOVED.equals(actionStr)) {
-                 Uri data = intent.getData();
-                 String pkgName = data.getEncodedSchemeSpecificPart();
-                 updatePackageList(actionStr, pkgName);
-             } else if (Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE.equals(actionStr) ||
-                     Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE.equals(actionStr)) {
-                 // When applications become available or unavailable (perhaps because
-                 // the SD card was inserted or ejected) we need to refresh the
-                 // AppInfo with new label, icon and size information as appropriate
-                 // given the newfound (un)availability of the application.
-                 // A simple way to do that is to treat the refresh as a package
-                 // removal followed by a package addition.
-                 String pkgList[] = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST);
-                 if (pkgList == null || pkgList.length == 0) {
-                     // Ignore
-                     return;
-                 }
-                 for (String pkgName : pkgList) {
-                     updatePackageList(Intent.ACTION_PACKAGE_REMOVED, pkgName);
-                     updatePackageList(Intent.ACTION_PACKAGE_ADDED, pkgName);
-                 }
-             }
-         }
-    }
-
-    private void updatePackageList(String actionStr, String pkgName) {
-        if (Intent.ACTION_PACKAGE_ADDED.equalsIgnoreCase(actionStr)) {
-            Bundle data = new Bundle();
-            data.putString(ATTR_PKG_NAME, pkgName);
-            sendMessageToHandler(ADD_PKG_START, data);
-        } else if (Intent.ACTION_PACKAGE_REMOVED.equalsIgnoreCase(actionStr)) {
-            Bundle data = new Bundle();
-            data.putString(ATTR_PKG_NAME, pkgName);
-            sendMessageToHandler(REMOVE_PKG, data);
-        }
-    }
-
-    static final String TAB_DOWNLOADED = "Downloaded";
-    static final String TAB_RUNNING = "Running";
-    static final String TAB_ALL = "All";
-    static final String TAB_SDCARD = "OnSdCard";
-    private View mRootView;
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        if(localLOGV) Log.i(TAG, "Activity created");
-        long sCreate;
-        if (DEBUG_TIME) {
-            sCreate = SystemClock.elapsedRealtime();
-        }
-        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();
-        // initialize some window features
-        requestWindowFeature(Window.FEATURE_RIGHT_ICON);
-        requestWindowFeature(Window.FEATURE_PROGRESS);
-        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
-        showLoadingMsg();
-        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(FILTER_APPS_ALL);
-        mAppInfoAdapter = new AppInfoAdapter(this, appList);
-        ListView lv = (ListView) mRootView.findViewById(android.R.id.list);
-        lv.setOnItemClickListener(this);
-        lv.setSaveEnabled(true);
-        lv.setItemsCanFocus(true);
-        lv.setOnItemClickListener(this);
-        lv.setTextFilterEnabled(true);
-        mListView = lv;
-        if (DEBUG_TIME) {
-            Log.i(TAG, "Total time in Activity.create:: " +
-                    (SystemClock.elapsedRealtime() - sCreate)+ " ms");
-        }
-        // Get initial info from file for the very first time this activity started
-        long sStart;
-        if (DEBUG_TIME) {
-            sStart = SystemClock.elapsedRealtime();
-        }
-        mCache.loadCache();
-        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),
-                        getResources().getDrawable(R.drawable.ic_tab_download))
-                .setContent(this));
-        tabHost.addTab(tabHost.newTabSpec(TAB_RUNNING)
-                .setIndicator(getString(R.string.filter_apps_running),
-                        getResources().getDrawable(R.drawable.ic_tab_running))
-                .setContent(this));
-        tabHost.addTab(tabHost.newTabSpec(TAB_ALL)
-                .setIndicator(getString(R.string.filter_apps_all),
-                        getResources().getDrawable(R.drawable.ic_tab_all))
-                .setContent(this));
-        tabHost.addTab(tabHost.newTabSpec(TAB_SDCARD)
-                .setIndicator(getString(R.string.filter_apps_onsdcard),
-                        getResources().getDrawable(R.drawable.ic_tab_sdcard))
-                .setContent(this));
-        tabHost.setCurrentTabByTag(defaultTabTag);
-        tabHost.setOnTabChangedListener(this);
-    }
-    
-    @Override
-    protected void onDestroy() {
-        // Persist values in cache
-        mCache.updateCache();
-        super.onDestroy();
-    }
-
-    @Override
-    public Dialog onCreateDialog(int id, Bundle args) {
-        if (id == DLG_LOADING) {
-            ProgressDialog dlg = new ProgressDialog(this);
-            dlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
-            dlg.setMessage(getText(R.string.loading));
-            dlg.setIndeterminate(true);        
-            dlg.setOnCancelListener(this);
-            return dlg;
-        }
-        return null;
-    }
-
-    private void showLoadingMsg() {
-        if (DEBUG_TIME) {
-            mLoadTimeStart = SystemClock.elapsedRealtime();
-        }
-        showDialog(DLG_LOADING); 
-        if(localLOGV) Log.i(TAG, "Displaying Loading message");
-    }
-    
-    private void dismissLoadingMsg() {
-        if(localLOGV) Log.i(TAG, "Dismissing Loading message");
-        dismissDialog(DLG_LOADING);
-        if (DEBUG_TIME) Log.i(TAG, "Displayed loading message for "+
-                (SystemClock.elapsedRealtime() - mLoadTimeStart) + " ms");
-    }
-
-    class AppInfoCache {
-        final static boolean FILE_CACHE = true;
-        private static final String mFileCacheName="ManageAppsInfo.txt";
-        private static final int FILE_BUFFER_SIZE = 1024;
-        private static final boolean DEBUG_CACHE = false;
-        private static final boolean DEBUG_CACHE_TIME = false;
-        private Map<String, AppInfo> mAppPropCache = new HashMap<String, AppInfo>();
-
-        private boolean isEmpty() {
-            return (mAppPropCache.size() == 0);
-        }
-
-        private AppInfo getEntry(String pkgName) {
-            return mAppPropCache.get(pkgName);
-        }
-
-        private Set<String> getPkgList() {
-            return mAppPropCache.keySet();
-        }
-
-        public void addEntry(AppInfo aInfo) {
-            if ((aInfo != null) && (aInfo.pkgName != null)) {
-                mAppPropCache.put(aInfo.pkgName, aInfo);
-            }
-        }
-
-        public void removeEntry(String pkgName) {
-            if (pkgName != null) {
-                mAppPropCache.remove(pkgName);
-            }
-        }
-
-        private void readFromFile() {
-            File cacheFile = new File(getFilesDir(), mFileCacheName);
-            if (!cacheFile.exists()) {
-                return;
-            }
-            FileInputStream fis = null;
-            boolean err = false;
-            try {
-                fis = new FileInputStream(cacheFile);
-            } catch (FileNotFoundException e) {
-                Log.w(TAG, "Error opening file for read operation : " + cacheFile
-                        + " with exception " + e);
-                return;
-            }
-            try {
-                byte[] byteBuff = new byte[FILE_BUFFER_SIZE];
-                byte[] lenBytes = new byte[2];
-                mAppPropCache.clear();
-                while(fis.available() > 0) {
-                    fis.read(lenBytes, 0, 2);
-                    int buffLen = (lenBytes[0] << 8) | lenBytes[1];
-                    if ((buffLen <= 0) || (buffLen > byteBuff.length)) {
-                        err = true;
-                        break;
-                    }
-                    // Buffer length cannot be greater than max.
-                    fis.read(byteBuff, 0, buffLen);
-                    String buffStr = new String(byteBuff);
-                    if (DEBUG_CACHE) {
-                        Log.i(TAG, "Read string of len= " + buffLen + " :: " + buffStr + " from file");
-                    }
-                    // Parse string for sizes
-                    String substrs[] = buffStr.split(",");
-                    if (substrs.length < 4) {
-                        // Something wrong. Bail out and let recomputation proceed.
-                        err = true;
-                        break;
-                    }
-                    long size = -1;
-                    int idx = -1;
-                    try {
-                        size = Long.parseLong(substrs[1]);
-                    } catch (NumberFormatException e) {
-                        err = true;
-                        break;
-                    }
-                    if (DEBUG_CACHE) {
-                        Log.i(TAG, "Creating entry(" + substrs[0] + ", " + idx+"," + size + ", " + substrs[2] + ")");
-                    }
-                    AppInfo aInfo = new AppInfo(substrs[0], idx, substrs[3], size, substrs[2]);
-                    mAppPropCache.put(aInfo.pkgName, aInfo);
-                }
-            } catch (IOException e) {
-                Log.w(TAG, "Failed reading from file : " + cacheFile + " with exception : " + e);
-                err = true;
-            } finally {
-                if (fis != null) {
-                    try {
-                        fis.close();
-                    } catch (IOException e) {
-                        Log.w(TAG, "Failed to close file " + cacheFile + " with exception : " +e);
-                        err = true;
-                    }
-                }
-                if (err) {
-                    Log.i(TAG, "Failed to load cache. Not using cache for now.");
-                    // Clear cache and bail out
-                    mAppPropCache.clear();
-                }
-            }
-        }
-
-        boolean writeToFile() {
-            File cacheFile = new File(getFilesDir(), mFileCacheName);
-            FileOutputStream fos = null;
-            try {
-                long opStartTime = SystemClock.uptimeMillis();
-                fos = new FileOutputStream(cacheFile);
-                Set<String> keys = mAppPropCache.keySet();
-                byte[] lenBytes = new byte[2];
-                for (String key : keys) {
-                    AppInfo aInfo = mAppPropCache.get(key);
-                    StringBuilder buff = new StringBuilder(aInfo.pkgName);
-                    buff.append(",");
-                    buff.append(aInfo.size);
-                    buff.append(",");
-                    buff.append(aInfo.appSize);
-                    buff.append(",");
-                    buff.append(aInfo.appName);
-                    if (DEBUG_CACHE) {
-                        Log.i(TAG, "Writing str : " + buff.toString() + " to file of length:" +
-                                buff.toString().length());
-                    }
-                    try {
-                        byte[] byteBuff = buff.toString().getBytes();
-                        int len = byteBuff.length;
-                        if (byteBuff.length >= FILE_BUFFER_SIZE) {
-                            // Truncate the output
-                            len = FILE_BUFFER_SIZE;
-                        }
-                        // Use 2 bytes to write length
-                        lenBytes[1] = (byte) (len & 0x00ff);
-                        lenBytes[0] = (byte) ((len & 0x00ff00) >> 8);
-                        fos.write(lenBytes, 0, 2);
-                        fos.write(byteBuff, 0, len);
-                    } catch (IOException e) {
-                        Log.w(TAG, "Failed to write to file : " + cacheFile + " with exception : " + e);
-                        return false;
-                    }
-                }
-                if (DEBUG_CACHE_TIME) {
-                    Log.i(TAG, "Took " + (SystemClock.uptimeMillis() - opStartTime) + " ms to write and process from file");
-                }
-                return true;
-            } catch (FileNotFoundException e) {
-                Log.w(TAG, "Error opening file for write operation : " + cacheFile+
-                        " with exception : " + e);
-                return false;
-            } finally {
-                if (fos != null) {
-                    try {
-                        fos.close();
-                    } catch (IOException e) {
-                        Log.w(TAG, "Failed closing file : " + cacheFile + " with exception : " + e);
-                        return false;
-                    }
-                }
-            }
-        }
-        private void loadCache() {
-             // Restore preferences
-            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
-            boolean disable = settings.getBoolean(PREF_DISABLE_CACHE, true);
-            if (disable) Log.w(TAG, "Cache has been disabled");
-            // Disable cache till the data is loaded successfully
-            SharedPreferences.Editor editor = settings.edit();
-            editor.putBoolean(PREF_DISABLE_CACHE, true);
-            editor.commit();
-            if (FILE_CACHE && !disable) {
-                readFromFile();
-                // Enable cache since the file has been read successfully
-                editor.putBoolean(PREF_DISABLE_CACHE, false);
-                editor.commit();
-            }
-        }
-
-        private void updateCache() {
-            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
-            SharedPreferences.Editor editor = settings.edit();
-            editor.putBoolean(PREF_DISABLE_CACHE, true);
-            editor.commit();
-            if (FILE_CACHE) {
-                boolean writeStatus = writeToFile();
-                mAppPropCache.clear();
-                if (writeStatus) {
-                    // Enable cache since the file has been read successfully
-                    editor.putBoolean(PREF_DISABLE_CACHE, false);
-                    editor.commit();
-                }
-            }
-        }
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        // Register receiver
-        mReceiver.registerReceiver();
-        sendMessageToHandler(INIT_PKG_INFO);
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        // Stop the background threads
-        if (mResourceThread != null) {
-            mResourceThread.setAbort();
-        }
-        if (mSizeComputor != null) {
-            mSizeComputor.setAbort();
-        }
-        // clear all messages related to application list
-        clearMessagesInHandler();
-        // register receiver here
-        unregisterReceiver(mReceiver);
-    }
-    
-    // Avoid the restart and pause when orientation changes
-    @Override
-    public void onConfigurationChanged(Configuration newConfig) {
-        super.onConfigurationChanged(newConfig);
-    }
-    
-    /*
-     * comparator class used to sort AppInfo objects based on size
-     */
-    class SizeComparator implements Comparator<ApplicationInfo> {
-        public final int compare(ApplicationInfo a, ApplicationInfo b) {
-            AppInfo ainfo = mCache.getEntry(a.packageName);
-            AppInfo binfo = mCache.getEntry(b.packageName);
-            long atotal = ainfo.size;
-            long btotal = binfo.size;
-            long ret = atotal - btotal;
-            // negate result to sort in descending order
-            if (ret < 0) {
-                return 1;
-            }
-            if (ret == 0) {
-                return 0;
-            }
-            return -1;
-        }
-    }
-
-    /*
-     * Customized comparator class to compare labels.
-     * Don't use the one defined in ApplicationInfo since that loads the labels again.
-     */
-    class AlphaComparator implements Comparator<ApplicationInfo> {
-        private final Collator   sCollator = Collator.getInstance();
-
-        public final int compare(ApplicationInfo a, ApplicationInfo b) {
-            AppInfo ainfo = mCache.getEntry(a.packageName);
-            AppInfo binfo = mCache.getEntry(b.packageName);
-            // Check for null app names, to avoid NPE in rare cases
-            if (ainfo == null || ainfo.appName == null) return -1;
-            if (binfo == null || binfo.appName == null) return 1;
-            return sCollator.compare(ainfo.appName.toString(), binfo.appName.toString());
-        }
-    }
-
-    // utility method used to start sub activity
-    private void startApplicationDetailsActivity() {
-        // Create intent to start new activity
-        Intent intent = new Intent(Intent.ACTION_VIEW);
-        intent.setClass(this, InstalledAppDetails.class);
-        intent.putExtra(APP_PKG_NAME, mCurrentPkgName);
-        // start new activity to display extended information
-        startActivityForResult(intent, INSTALLED_APP_DETAILS);
-    }
-    
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        menu.add(0, SORT_ORDER_ALPHA, 1, R.string.sort_order_alpha)
-                .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); 
-        return true;
-    }
-    
-    @Override
-    public boolean onPrepareOptionsMenu(Menu menu) {
-        if (mFirst) {
-            menu.findItem(SORT_ORDER_ALPHA).setVisible(mSortOrder != SORT_ORDER_ALPHA);
-            menu.findItem(SORT_ORDER_SIZE).setVisible(mSortOrder != SORT_ORDER_SIZE);
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        int menuId = item.getItemId();
-        if ((menuId == SORT_ORDER_ALPHA) || (menuId == SORT_ORDER_SIZE)) {
-            sendMessageToHandler(REORDER_LIST, menuId);
-        }
-        return true;
-    }
-
-    public void onItemClick(AdapterView<?> parent, View view, int position,
-            long id) {
-        ApplicationInfo info = (ApplicationInfo)mAppInfoAdapter.getItem(position);
-        mCurrentPkgName = info.packageName;
-        startApplicationDetailsActivity();
-    }
-    
-    // Finish the activity if the user presses the back button to cancel the activity
-    public void onCancel(DialogInterface dialog) {
-        finish();
-    }
-
-    public View createTabContent(String tag) {
-        return mRootView;
-    }
-
-    public void onTabChanged(String tabId) {
-        int newOption;
-        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 if (TAB_SDCARD.equalsIgnoreCase(tabId)) {
-            newOption = FILTER_APPS_SDCARD;
-        } else {
-            // Invalid option. Do nothing
-            return;
-        }
-        sendMessageToHandler(REORDER_LIST, newOption);
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode,
-            Intent data) {
-        if (requestCode == INSTALLED_APP_DETAILS && mCurrentPkgName != null) {
-            // Refresh package attributes
-            try {
-                ApplicationInfo info = mPm.getApplicationInfo(mCurrentPkgName,
-                        PackageManager.GET_UNINSTALLED_PACKAGES);
-            } catch (NameNotFoundException e) {
-                Bundle rData = new Bundle();
-                rData.putString(ATTR_PKG_NAME, mCurrentPkgName);
-                sendMessageToHandler(REMOVE_PKG, rData);
-                mCurrentPkgName = null;
-            }
-        }
-    }
-}
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index 4de0e44..e653d90 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -16,20 +16,16 @@
 
 package com.android.settings;
 
+import com.android.internal.os.storage.ExternalStorageFormatter;
 import com.android.internal.widget.LockPatternUtils;
 
 import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.ServiceManager;
-import android.os.SystemProperties;
-import android.text.TextUtils;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.Button;
+import android.widget.CheckBox;
 
 /**
  * Confirm and execute a reset of the device to a clean "just out of the box"
@@ -48,6 +44,8 @@
 
     private View mInitialView;
     private Button mInitiateButton;
+    private View mExternalStorageContainer;
+    private CheckBox mExternalStorage;
 
     private View mFinalView;
     private Button mFinalButton;
@@ -63,8 +61,14 @@
                     return;
                 }
 
-                sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));
-                // Intent handling is asynchronous -- assume it will happen soon.
+                if (mExternalStorage.isChecked()) {
+                    Intent intent = new Intent(ExternalStorageFormatter.FORMAT_AND_FACTORY_RESET);
+                    intent.setComponent(ExternalStorageFormatter.COMPONENT_NAME);
+                    startService(intent);
+                } else {
+                    sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));
+                    // Intent handling is asynchronous -- assume it will happen soon.
+                }
             }
         };
 
@@ -145,6 +149,16 @@
             mInitiateButton =
                     (Button) mInitialView.findViewById(R.id.initiate_master_clear);
             mInitiateButton.setOnClickListener(mInitiateListener);
+            mExternalStorageContainer =
+                mInitialView.findViewById(R.id.erase_external_container);
+            mExternalStorage =
+                    (CheckBox) mInitialView.findViewById(R.id.erase_external);
+            mExternalStorageContainer.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    mExternalStorage.toggle();
+                }
+            });
         }
 
         setContentView(mInitialView);
@@ -170,7 +184,8 @@
     public void onPause() {
         super.onPause();
 
-        establishInitialState();
+        if (!isFinishing()) {
+            establishInitialState();
+        }
     }
-
 }
diff --git a/src/com/android/settings/MediaFormat.java b/src/com/android/settings/MediaFormat.java
index b78ff62..d8d57e4 100644
--- a/src/com/android/settings/MediaFormat.java
+++ b/src/com/android/settings/MediaFormat.java
@@ -16,23 +16,15 @@
 
 package com.android.settings;
 
-import com.android.internal.widget.LockPatternUtils;
-
 import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.storage.IMountService;
-import android.os.ServiceManager;
-import android.os.SystemProperties;
-import android.os.Environment;
-import android.text.TextUtils;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.Button;
 
+import com.android.internal.os.storage.ExternalStorageFormatter;
+
 /**
  * Confirm and execute a format of the sdcard.
  * Multiple confirmations are required: first, a general "are you sure
@@ -46,7 +38,6 @@
     private static final int KEYGUARD_REQUEST = 55;
 
     private LayoutInflater mInflater;
-    private LockPatternUtils mLockUtils;
 
     private View mInitialView;
     private Button mInitiateButton;
@@ -64,23 +55,10 @@
                 if (Utils.isMonkeyRunning()) {
                     return;
                 }
-                final IMountService service =
-                        IMountService.Stub.asInterface(ServiceManager.getService("mount"));
-                if (service != null) {
-                    new Thread() {
-                        public void run() {
-                            try {
-                                service.formatVolume(Environment.getExternalStorageDirectory().toString());
-                            } catch (Exception e) {
-                                // Intentionally blank - there's nothing we can do here
-                                Log.w("MediaFormat", "Unable to invoke IMountService.formatMedia()");
-                            }
-                        }
-                    }.start();
-                } else {
-                    Log.w("MediaFormat", "Unable to locate IMountService");
-                }
-            finish();
+                Intent intent = new Intent(ExternalStorageFormatter.FORMAT_ONLY);
+                intent.setComponent(ExternalStorageFormatter.COMPONENT_NAME);
+                startService(intent);
+                finish();
             }
         };
 
@@ -171,7 +149,6 @@
         mInitialView = null;
         mFinalView = null;
         mInflater = LayoutInflater.from(this);
-        mLockUtils = new LockPatternUtils(this);
 
         establishInitialState();
     }
@@ -184,7 +161,8 @@
     public void onPause() {
         super.onPause();
 
-        establishInitialState();
+        if (!isFinishing()) {
+            establishInitialState();
+        }
     }
-
 }
diff --git a/src/com/android/settings/RunningServices.java b/src/com/android/settings/RunningServices.java
deleted file mode 100644
index ed970a7..0000000
--- a/src/com/android/settings/RunningServices.java
+++ /dev/null
@@ -1,1172 +0,0 @@
-/*
- * Copyright (C) 2006 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.settings.R;
-import android.app.ActivityManager;
-import android.app.ActivityManagerNative;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.ListActivity;
-import android.app.PendingIntent;
-import android.content.ActivityNotFoundException;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.IntentSender;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageItemInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ServiceInfo;
-import android.content.res.Resources;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.Rect;
-import android.os.Bundle;
-import android.os.Debug;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Looper;
-import android.os.Message;
-import android.os.RemoteException;
-import android.os.SystemClock;
-import android.os.SystemProperties;
-import android.text.format.DateUtils;
-import android.text.format.Formatter;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.util.SparseArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AbsListView;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import java.io.FileInputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-public class RunningServices extends ListActivity
-        implements AbsListView.RecyclerListener,
-        DialogInterface.OnClickListener {
-    static final String TAG = "RunningServices";
-    
-    /** Maximum number of services to retrieve */
-    static final int MAX_SERVICES = 100;
-    
-    static final int MSG_UPDATE_TIMES = 1;
-    static final int MSG_UPDATE_CONTENTS = 2;
-    static final int MSG_REFRESH_UI = 3;
-    
-    static final long TIME_UPDATE_DELAY = 1000;
-    static final long CONTENTS_UPDATE_DELAY = 2000;
-    
-    // Memory pages are 4K.
-    static final long PAGE_SIZE = 4*1024;
-    
-    long SECONDARY_SERVER_MEM;
-    
-    final HashMap<View, ActiveItem> mActiveItems = new HashMap<View, ActiveItem>();
-    
-    ActivityManager mAm;
-    
-    State mState;
-    
-    StringBuilder mBuilder = new StringBuilder(128);
-    
-    BaseItem mCurSelected;
-    
-    int mProcessBgColor;
-    
-    LinearColorBar mColorBar;
-    TextView mBackgroundProcessText;
-    TextView mForegroundProcessText;
-    
-    int mLastNumBackgroundProcesses = -1;
-    int mLastNumForegroundProcesses = -1;
-    int mLastNumServiceProcesses = -1;
-    long mLastBackgroundProcessMemory = -1;
-    long mLastForegroundProcessMemory = -1;
-    long mLastServiceProcessMemory = -1;
-    long mLastAvailMemory = -1;
-    
-    Dialog mCurDialog;
-    
-    byte[] mBuffer = new byte[1024];
-    
-    class ActiveItem {
-        View mRootView;
-        BaseItem mItem;
-        ActivityManager.RunningServiceInfo mService;
-        ViewHolder mHolder;
-        long mFirstRunTime;
-        
-        void updateTime(Context context) {
-            if (mItem.mIsProcess) {
-                String size = mItem.mSizeStr != null ? mItem.mSizeStr : "";
-                if (!size.equals(mItem.mCurSizeStr)) {
-                    mItem.mCurSizeStr = size;
-                    mHolder.size.setText(size);
-                }
-            } else {
-                if (mItem.mActiveSince >= 0) {
-                    mHolder.size.setText(DateUtils.formatElapsedTime(mBuilder,
-                            (SystemClock.uptimeMillis()-mFirstRunTime)/1000));
-                } else {
-                    mHolder.size.setText(context.getResources().getText(
-                            R.string.service_restarting));
-                }
-            }
-        }
-    }
-    
-    static class BaseItem {
-        final boolean mIsProcess;
-        
-        PackageItemInfo mPackageInfo;
-        CharSequence mDisplayLabel;
-        String mLabel;
-        String mDescription;
-        
-        int mCurSeq;
-        
-        long mActiveSince;
-        long mSize;
-        String mSizeStr;
-        String mCurSizeStr;
-        boolean mNeedDivider;
-        
-        public BaseItem(boolean isProcess) {
-            mIsProcess = isProcess;
-        }
-    }
-    
-    static class ServiceItem extends BaseItem {
-        ActivityManager.RunningServiceInfo mRunningService;
-        ServiceInfo mServiceInfo;
-        boolean mShownAsStarted;
-        
-        public ServiceItem() {
-            super(false);
-        }
-    }
-    
-    static class ProcessItem extends BaseItem {
-        final HashMap<ComponentName, ServiceItem> mServices
-                = new HashMap<ComponentName, ServiceItem>();
-        final SparseArray<ProcessItem> mDependentProcesses
-                = new SparseArray<ProcessItem>();
-        
-        final int mUid;
-        final String mProcessName;
-        int mPid;
-        
-        ProcessItem mClient;
-        int mLastNumDependentProcesses;
-        
-        int mRunningSeq;
-        ActivityManager.RunningAppProcessInfo mRunningProcessInfo;
-        
-        // Purely for sorting.
-        boolean mIsSystem;
-        boolean mIsStarted;
-        long mActiveSince;
-        
-        public ProcessItem(Context context, int uid, String processName) {
-            super(true);
-            mDescription = context.getResources().getString(
-                    R.string.service_process_name, processName);
-            mUid = uid;
-            mProcessName = processName;
-        }
-        
-        void ensureLabel(PackageManager pm) {
-            if (mLabel != null) {
-                return;
-            }
-            
-            try {
-                ApplicationInfo ai = pm.getApplicationInfo(mProcessName, 0);
-                if (ai.uid == mUid) {
-                    mDisplayLabel = ai.loadLabel(pm);
-                    mLabel = mDisplayLabel.toString();
-                    mPackageInfo = ai;
-                    return;
-                }
-            } catch (PackageManager.NameNotFoundException e) {
-            }
-            
-            // If we couldn't get information about the overall
-            // process, try to find something about the uid.
-            String[] pkgs = pm.getPackagesForUid(mUid);
-            
-            // If there is one package with this uid, that is what we want.
-            if (pkgs.length == 1) {
-                try {
-                    ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], 0);
-                    mDisplayLabel = ai.loadLabel(pm);
-                    mLabel = mDisplayLabel.toString();
-                    mPackageInfo = ai;
-                    return;
-                } catch (PackageManager.NameNotFoundException e) {
-                }
-            }
-            
-            // If there are multiple, see if one gives us the official name
-            // for this uid.
-            for (String name : pkgs) {
-                try {
-                    PackageInfo pi = pm.getPackageInfo(name, 0);
-                    if (pi.sharedUserLabel != 0) {
-                        CharSequence nm = pm.getText(name,
-                                pi.sharedUserLabel, pi.applicationInfo);
-                        if (nm != null) {
-                            mDisplayLabel = nm;
-                            mLabel = nm.toString();
-                            mPackageInfo = pi.applicationInfo;
-                            return;
-                        }
-                    }
-                } catch (PackageManager.NameNotFoundException e) {
-                }
-            }
-            
-            // If still don't have anything to display, just use the
-            // service info.
-            if (mServices.size() > 0) {
-                mPackageInfo = mServices.values().iterator().next()
-                        .mServiceInfo.applicationInfo;
-                mDisplayLabel = mPackageInfo.loadLabel(pm);
-                mLabel = mDisplayLabel.toString();
-                return;
-            }
-            
-            // Finally... whatever, just pick the first package's name.
-            try {
-                ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], 0);
-                mDisplayLabel = ai.loadLabel(pm);
-                mLabel = mDisplayLabel.toString();
-                mPackageInfo = ai;
-                return;
-            } catch (PackageManager.NameNotFoundException e) {
-            }
-        }
-        
-        boolean updateService(Context context,
-                ActivityManager.RunningServiceInfo service) {
-            final PackageManager pm = context.getPackageManager();
-            
-            boolean changed = false;
-            ServiceItem si = mServices.get(service.service);
-            if (si == null) {
-                changed = true;
-                si = new ServiceItem();
-                si.mRunningService = service;
-                try {
-                    si.mServiceInfo = pm.getServiceInfo(service.service, 0);
-                } catch (PackageManager.NameNotFoundException e) {
-                }
-                if (si.mServiceInfo != null && (si.mServiceInfo.labelRes != 0
-                        || si.mServiceInfo.nonLocalizedLabel != null)) {
-                    si.mDisplayLabel = si.mServiceInfo.loadLabel(pm);
-                    si.mLabel = si.mDisplayLabel.toString();
-                } else {
-                    si.mLabel = si.mRunningService.service.getClassName();
-                    int tail = si.mLabel.lastIndexOf('.');
-                    if (tail >= 0) {
-                        si.mLabel = si.mLabel.substring(tail+1, si.mLabel.length());
-                    }
-                    si.mDisplayLabel = si.mLabel;
-                }
-                si.mPackageInfo = si.mServiceInfo.applicationInfo;
-                mServices.put(service.service, si);
-            }
-            si.mCurSeq = mCurSeq;
-            si.mRunningService = service;
-            long activeSince = service.restarting == 0 ? service.activeSince : -1;
-            if (si.mActiveSince != activeSince) {
-                si.mActiveSince = activeSince;
-                changed = true;
-            }
-            if (service.clientPackage != null && service.clientLabel != 0) {
-                if (si.mShownAsStarted) {
-                    si.mShownAsStarted = false;
-                    changed = true;
-                }
-                try {
-                    Resources clientr = pm.getResourcesForApplication(service.clientPackage);
-                    String label = clientr.getString(service.clientLabel);
-                    si.mDescription = context.getResources().getString(
-                            R.string.service_client_name, label);
-                } catch (PackageManager.NameNotFoundException e) {
-                    si.mDescription = null;
-                }
-            } else {
-                if (!si.mShownAsStarted) {
-                    si.mShownAsStarted = true;
-                    changed = true;
-                }
-                si.mDescription = context.getResources().getString(
-                        R.string.service_started_by_app);
-            }
-            
-            return changed;
-        }
-        
-        boolean updateSize(Context context, Debug.MemoryInfo mem, int curSeq) {
-            mSize = ((long)mem.getTotalPss()) * 1024;
-            if (mCurSeq == curSeq) {
-                String sizeStr = Formatter.formatShortFileSize(
-                        context, mSize);
-                if (!sizeStr.equals(mSizeStr)){
-                    mSizeStr = sizeStr;
-                    // We update this on the second tick where we update just
-                    // the text in the current items, so no need to say we
-                    // changed here.
-                    return false;
-                }
-            }
-            return false;
-        }
-        
-        boolean buildDependencyChain(Context context, PackageManager pm, int curSeq) {
-            final int NP = mDependentProcesses.size();
-            boolean changed = false;
-            for (int i=0; i<NP; i++) {
-                ProcessItem proc = mDependentProcesses.valueAt(i);
-                if (proc.mClient != this) {
-                    changed = true;
-                    proc.mClient = this;
-                }
-                proc.mCurSeq = curSeq;
-                proc.ensureLabel(pm);
-                changed |= proc.buildDependencyChain(context, pm, curSeq);
-            }
-            
-            if (mLastNumDependentProcesses != mDependentProcesses.size()) {
-                changed = true;
-                mLastNumDependentProcesses = mDependentProcesses.size();
-            }
-            
-            return changed;
-        }
-        
-        void addDependentProcesses(ArrayList<BaseItem> dest,
-                ArrayList<ProcessItem> destProc) {
-            final int NP = mDependentProcesses.size();
-            for (int i=0; i<NP; i++) {
-                ProcessItem proc = mDependentProcesses.valueAt(i);
-                proc.addDependentProcesses(dest, destProc);
-                dest.add(proc);
-                if (proc.mPid > 0) {
-                    destProc.add(proc);
-                }
-            }
-        }
-    }
-    
-    static class ServiceProcessComparator implements Comparator<ProcessItem> {
-        public int compare(ProcessItem object1, ProcessItem object2) {
-            if (object1.mIsStarted != object2.mIsStarted) {
-                // Non-started processes go last.
-                return object1.mIsStarted ? -1 : 1;
-            }
-            if (object1.mIsSystem != object2.mIsSystem) {
-                // System processes go below non-system.
-                return object1.mIsSystem ? 1 : -1;
-            }
-            if (object1.mActiveSince != object2.mActiveSince) {
-                // Remaining ones are sorted with the longest running
-                // services last.
-                return (object1.mActiveSince > object2.mActiveSince) ? -1 : 1;
-            }
-            return 0;
-        }
-    }
-    
-    static class State {
-        final SparseArray<HashMap<String, ProcessItem>> mProcesses
-                = new SparseArray<HashMap<String, ProcessItem>>();
-        final SparseArray<ProcessItem> mActiveProcesses
-                = new SparseArray<ProcessItem>();
-        final ServiceProcessComparator mServiceProcessComparator
-                = new ServiceProcessComparator();
-        
-        // Temporary for finding process dependencies.
-        final SparseArray<ProcessItem> mRunningProcesses
-                = new SparseArray<ProcessItem>();
-        
-        final ArrayList<ProcessItem> mProcessItems = new ArrayList<ProcessItem>();
-        final ArrayList<ProcessItem> mAllProcessItems = new ArrayList<ProcessItem>();
-        
-        int mSequence = 0;
-        
-        // ----- following protected by mLock -----
-        
-        // Lock for protecting the state that will be shared between the
-        // background update thread and the UI thread.
-        final Object mLock = new Object();
-        
-        ArrayList<BaseItem> mItems = new ArrayList<BaseItem>();
-        
-        int mNumBackgroundProcesses;
-        long mBackgroundProcessMemory;
-        int mNumForegroundProcesses;
-        long mForegroundProcessMemory;
-        int mNumServiceProcesses;
-        long mServiceProcessMemory;
-        
-        boolean update(Context context, ActivityManager am) {
-            final PackageManager pm = context.getPackageManager();
-            
-            mSequence++;
-            
-            boolean changed = false;
-            
-            List<ActivityManager.RunningServiceInfo> services 
-                    = am.getRunningServices(MAX_SERVICES);
-            final int NS = services != null ? services.size() : 0;
-            for (int i=0; i<NS; i++) {
-                ActivityManager.RunningServiceInfo si = services.get(i);
-                // We are not interested in services that have not been started
-                // and don't have a known client, because
-                // there is nothing the user can do about them.
-                if (!si.started && si.clientLabel == 0) {
-                    continue;
-                }
-                // We likewise don't care about services running in a
-                // persistent process like the system or phone.
-                if ((si.flags&ActivityManager.RunningServiceInfo.FLAG_PERSISTENT_PROCESS)
-                        != 0) {
-                    continue;
-                }
-                
-                HashMap<String, ProcessItem> procs = mProcesses.get(si.uid);
-                if (procs == null) {
-                    procs = new HashMap<String, ProcessItem>();
-                    mProcesses.put(si.uid, procs);
-                }
-                ProcessItem proc = procs.get(si.process);
-                if (proc == null) {
-                    changed = true;
-                    proc = new ProcessItem(context, si.uid, si.process);
-                    procs.put(si.process, proc);
-                }
-                
-                if (proc.mCurSeq != mSequence) {
-                    int pid = si.restarting == 0 ? si.pid : 0;
-                    if (pid != proc.mPid) {
-                        changed = true;
-                        if (proc.mPid != pid) {
-                            if (proc.mPid != 0) {
-                                mActiveProcesses.remove(proc.mPid);
-                            }
-                            if (pid != 0) {
-                                mActiveProcesses.put(pid, proc);
-                            }
-                            proc.mPid = pid;
-                        }
-                    }
-                    proc.mDependentProcesses.clear();
-                    proc.mCurSeq = mSequence;
-                }
-                changed |= proc.updateService(context, si);
-            }
-            
-            // Now update the map of other processes that are running (but
-            // don't have services actively running inside them).
-            List<ActivityManager.RunningAppProcessInfo> processes
-                    = am.getRunningAppProcesses();
-            final int NP = processes != null ? processes.size() : 0;
-            for (int i=0; i<NP; i++) {
-                ActivityManager.RunningAppProcessInfo pi = processes.get(i);
-                ProcessItem proc = mActiveProcesses.get(pi.pid);
-                if (proc == null) {
-                    // This process is not one that is a direct container
-                    // of a service, so look for it in the secondary
-                    // running list.
-                    proc = mRunningProcesses.get(pi.pid);
-                    if (proc == null) {
-                        proc = new ProcessItem(context, pi.uid, pi.processName);
-                        proc.mPid = pi.pid;
-                        mRunningProcesses.put(pi.pid, proc);
-                    }
-                    proc.mDependentProcesses.clear();
-                }
-                proc.mRunningSeq = mSequence;
-                proc.mRunningProcessInfo = pi;
-            }
-            
-            // Build the chains from client processes to the process they are
-            // dependent on; also remove any old running processes.
-            int NRP = mRunningProcesses.size();
-            for (int i=0; i<NRP; i++) {
-                ProcessItem proc = mRunningProcesses.valueAt(i);
-                if (proc.mRunningSeq == mSequence) {
-                    int clientPid = proc.mRunningProcessInfo.importanceReasonPid;
-                    if (clientPid != 0) {
-                        ProcessItem client = mActiveProcesses.get(clientPid);
-                        if (client == null) {
-                            client = mRunningProcesses.get(clientPid);
-                        }
-                        if (client != null) {
-                            client.mDependentProcesses.put(proc.mPid, proc);
-                        }
-                    } else {
-                        // In this pass the process doesn't have a client.
-                        // Clear to make sure if it later gets the same one
-                        // that we will detect the change.
-                        proc.mClient = null;
-                    }
-                } else {
-                    mRunningProcesses.remove(mRunningProcesses.keyAt(i));
-                }
-            }
-            
-            // Follow the tree from all primary service processes to all
-            // processes they are dependent on, marking these processes as
-            // still being active and determining if anything has changed.
-            final int NAP = mActiveProcesses.size();
-            for (int i=0; i<NAP; i++) {
-                ProcessItem proc = mActiveProcesses.valueAt(i);
-                if (proc.mCurSeq == mSequence) {
-                    changed |= proc.buildDependencyChain(context, pm, mSequence);
-                }
-            }
-            
-            // Look for services and their primary processes that no longer exist...
-            for (int i=0; i<mProcesses.size(); i++) {
-                HashMap<String, ProcessItem> procs = mProcesses.valueAt(i);
-                Iterator<ProcessItem> pit = procs.values().iterator();
-                while (pit.hasNext()) {
-                    ProcessItem pi = pit.next();
-                    if (pi.mCurSeq == mSequence) {
-                        pi.ensureLabel(pm);
-                        if (pi.mPid == 0) {
-                            // Sanity: a non-process can't be dependent on
-                            // anything.
-                            pi.mDependentProcesses.clear();
-                        }
-                    } else {
-                        changed = true;
-                        pit.remove();
-                        if (procs.size() == 0) {
-                            mProcesses.remove(mProcesses.keyAt(i));
-                        }
-                        if (pi.mPid != 0) {
-                            mActiveProcesses.remove(pi.mPid);
-                        }
-                        continue;
-                    }
-                    Iterator<ServiceItem> sit = pi.mServices.values().iterator();
-                    while (sit.hasNext()) {
-                        ServiceItem si = sit.next();
-                        if (si.mCurSeq != mSequence) {
-                            changed = true;
-                            sit.remove();
-                        }
-                    }
-                }
-            }
-            
-            if (changed) {
-                // First determine an order for the services.
-                ArrayList<ProcessItem> sortedProcesses = new ArrayList<ProcessItem>();
-                for (int i=0; i<mProcesses.size(); i++) {
-                    for (ProcessItem pi : mProcesses.valueAt(i).values()) {
-                        pi.mIsSystem = false;
-                        pi.mIsStarted = true;
-                        pi.mActiveSince = Long.MAX_VALUE;
-                        for (ServiceItem si : pi.mServices.values()) {
-                            if (si.mServiceInfo != null
-                                    && (si.mServiceInfo.applicationInfo.flags
-                                            & ApplicationInfo.FLAG_SYSTEM) != 0) {
-                                pi.mIsSystem = true;
-                            }
-                            if (si.mRunningService != null
-                                    && si.mRunningService.clientLabel != 0) {
-                                pi.mIsStarted = false;
-                                if (pi.mActiveSince > si.mRunningService.activeSince) {
-                                    pi.mActiveSince = si.mRunningService.activeSince;
-                                }
-                            }
-                        }
-                        sortedProcesses.add(pi);
-                    }
-                }
-                
-                Collections.sort(sortedProcesses, mServiceProcessComparator);
-                
-                ArrayList<BaseItem> newItems = new ArrayList<BaseItem>();
-                mProcessItems.clear();
-                for (int i=0; i<sortedProcesses.size(); i++) {
-                    ProcessItem pi = sortedProcesses.get(i);
-                    pi.mNeedDivider = false;
-                    // First add processes we are dependent on.
-                    pi.addDependentProcesses(newItems, mProcessItems);
-                    // And add the process itself.
-                    newItems.add(pi);
-                    if (pi.mPid > 0) {
-                        mProcessItems.add(pi);
-                    }
-                    // And finally the services running in it.
-                    boolean needDivider = false;
-                    for (ServiceItem si : pi.mServices.values()) {
-                        si.mNeedDivider = needDivider;
-                        needDivider = true;
-                        newItems.add(si);
-                    }
-                }
-                synchronized (mLock) {
-                    mItems = newItems;
-                }
-            }
-            
-            // Count number of interesting other (non-active) processes, and
-            // build a list of all processes we will retrieve memory for.
-            mAllProcessItems.clear();
-            mAllProcessItems.addAll(mProcessItems);
-            int numBackgroundProcesses = 0;
-            int numForegroundProcesses = 0;
-            int numServiceProcesses = 0;
-            NRP = mRunningProcesses.size();
-            for (int i=0; i<NRP; i++) {
-                ProcessItem proc = mRunningProcesses.valueAt(i);
-                if (proc.mCurSeq != mSequence) {
-                    // We didn't hit this process as a dependency on one
-                    // of our active ones, so add it up if needed.
-                    if (proc.mRunningProcessInfo.importance >=
-                            ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
-                        numBackgroundProcesses++;
-                        mAllProcessItems.add(proc);
-                    } else if (proc.mRunningProcessInfo.importance <=
-                            ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
-                        numForegroundProcesses++;
-                        mAllProcessItems.add(proc);
-                    } else {
-                        Log.i(TAG, "Unknown non-service process: "
-                                + proc.mProcessName + " #" + proc.mPid);
-                    }
-                } else {
-                    numServiceProcesses++;
-                }
-            }
-            
-            long backgroundProcessMemory = 0;
-            long foregroundProcessMemory = 0;
-            long serviceProcessMemory = 0;
-            try {
-                final int numProc = mAllProcessItems.size();
-                int[] pids = new int[numProc];
-                for (int i=0; i<numProc; i++) {
-                    pids[i] = mAllProcessItems.get(i).mPid;
-                }
-                Debug.MemoryInfo[] mem = ActivityManagerNative.getDefault()
-                        .getProcessMemoryInfo(pids);
-                for (int i=pids.length-1; i>=0; i--) {
-                    ProcessItem proc = mAllProcessItems.get(i);
-                    changed |= proc.updateSize(context, mem[i], mSequence);
-                    if (proc.mCurSeq == mSequence) {
-                        serviceProcessMemory += proc.mSize;
-                    } else if (proc.mRunningProcessInfo.importance >=
-                            ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
-                        backgroundProcessMemory += proc.mSize;
-                    } else if (proc.mRunningProcessInfo.importance <=
-                            ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
-                        foregroundProcessMemory += proc.mSize;
-                    }
-                }
-            } catch (RemoteException e) {
-            }
-            
-            synchronized (mLock) {
-                mNumBackgroundProcesses = numBackgroundProcesses;
-                mNumForegroundProcesses = numForegroundProcesses;
-                mNumServiceProcesses = numServiceProcesses;
-                mBackgroundProcessMemory = backgroundProcessMemory;
-                mForegroundProcessMemory = foregroundProcessMemory;
-                mServiceProcessMemory = serviceProcessMemory;
-            }
-            
-            return changed;
-        }
-        
-        ArrayList<BaseItem> getCurrentItems() {
-            synchronized (mLock) {
-                return mItems;
-            }
-        }
-    }
-    
-    static class TimeTicker extends TextView {
-        public TimeTicker(Context context, AttributeSet attrs) {
-            super(context, attrs);
-        }
-    }
-    
-    static class ViewHolder {
-        ImageView separator;
-        ImageView icon;
-        TextView name;
-        TextView description;
-        TextView size;
-    }
-    
-    class ServiceListAdapter extends BaseAdapter {
-        final State mState;
-        final LayoutInflater mInflater;
-        ArrayList<BaseItem> mItems;
-        
-        ServiceListAdapter(State state) {
-            mState = state;
-            mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-            refreshItems();
-        }
-
-        void refreshItems() {
-            ArrayList<BaseItem> newItems = mState.getCurrentItems();
-            if (mItems != newItems) {
-                mItems = newItems;
-            }
-            if (mItems == null) {
-                mItems = new ArrayList<BaseItem>();
-            }
-        }
-        
-        public boolean hasStableIds() {
-            return true;
-        }
-        
-        public int getCount() {
-            return mItems.size();
-        }
-
-        public Object getItem(int position) {
-            return mItems.get(position);
-        }
-
-        public long getItemId(int position) {
-            return mItems.get(position).hashCode();
-        }
-
-        public boolean areAllItemsEnabled() {
-            return false;
-        }
-
-        public boolean isEnabled(int position) {
-            return !mItems.get(position).mIsProcess;
-        }
-
-        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.running_services_item, parent, false);
-            ViewHolder h = new ViewHolder();
-            h.separator = (ImageView)v.findViewById(R.id.separator);
-            h.icon = (ImageView)v.findViewById(R.id.icon);
-            h.name = (TextView)v.findViewById(R.id.name);
-            h.description = (TextView)v.findViewById(R.id.description);
-            h.size = (TextView)v.findViewById(R.id.size);
-            v.setTag(h);
-            return v;
-        }
-        
-        public void bindView(View view, int position) {
-            synchronized (mState.mLock) {
-                ViewHolder vh = (ViewHolder) view.getTag();
-                if (position >= mItems.size()) {
-                    // List must have changed since we last reported its
-                    // size...  ignore here, we will be doing a data changed
-                    // to refresh the entire list.
-                    return;
-                }
-                BaseItem item = mItems.get(position);
-                vh.name.setText(item.mDisplayLabel);
-                vh.separator.setVisibility(item.mNeedDivider
-                        ? View.VISIBLE : View.INVISIBLE);
-                ActiveItem ai = new ActiveItem();
-                ai.mRootView = view;
-                ai.mItem = item;
-                ai.mHolder = vh;
-                ai.mFirstRunTime = item.mActiveSince;
-                vh.description.setText(item.mDescription);
-                if (item.mIsProcess) {
-                    view.setBackgroundColor(mProcessBgColor);
-                    vh.icon.setImageDrawable(null);
-                    vh.icon.setVisibility(View.GONE);
-                    vh.description.setText(item.mDescription);
-                    item.mCurSizeStr = null;
-                } else {
-                    view.setBackgroundDrawable(null);
-                    vh.icon.setImageDrawable(item.mPackageInfo.loadIcon(getPackageManager()));
-                    vh.icon.setVisibility(View.VISIBLE);
-                    vh.description.setText(item.mDescription);
-                    ai.mFirstRunTime = item.mActiveSince;
-                }
-                ai.updateTime(RunningServices.this);
-                mActiveItems.put(view, ai);
-            }
-        }
-    }
-    
-    public static class LinearColorBar extends LinearLayout {
-        private float mRedRatio;
-        private float mYellowRatio;
-        private float mGreenRatio;
-        
-        final Rect mRect = new Rect();
-        final Paint mPaint = new Paint();
-        
-        public LinearColorBar(Context context, AttributeSet attrs) {
-            super(context, attrs);
-            setWillNotDraw(false);
-            mPaint.setStyle(Paint.Style.FILL);
-        }
-
-        public void setRatios(float red, float yellow, float green) {
-            mRedRatio = red;
-            mYellowRatio = yellow;
-            mGreenRatio = green;
-            invalidate();
-        }
-        
-        @Override
-        protected void onDraw(Canvas canvas) {
-            super.onDraw(canvas);
-            
-            int width = getWidth();
-            mRect.top = 0;
-            mRect.bottom = getHeight();
-            
-            int left = 0;
-            
-            int right = left + (int)(width*mRedRatio);
-            if (left < right) {
-                mRect.left = left;
-                mRect.right = right;
-                mPaint.setColor(0xffff8080);
-                canvas.drawRect(mRect, mPaint);
-                width -= (right-left);
-                left = right;
-            }
-            
-            right = left + (int)(width*mYellowRatio);
-            if (left < right) {
-                mRect.left = left;
-                mRect.right = right;
-                mPaint.setColor(0xffffff00);
-                canvas.drawRect(mRect, mPaint);
-                width -= (right-left);
-                left = right;
-            }
-            
-            right = left + width;
-            if (left < right) {
-                mRect.left = left;
-                mRect.right = right;
-                mPaint.setColor(0xff80ff80);
-                canvas.drawRect(mRect, mPaint);
-            }
-        }
-    }
-    
-    HandlerThread mBackgroundThread;
-    final class BackgroundHandler extends Handler {
-        public BackgroundHandler(Looper looper) {
-            super(looper);
-        }
-        
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MSG_UPDATE_CONTENTS:
-                    Message cmd = mHandler.obtainMessage(MSG_REFRESH_UI);
-                    cmd.arg1 = mState.update(RunningServices.this, mAm) ? 1 : 0;
-                    mHandler.sendMessage(cmd);
-                    removeMessages(MSG_UPDATE_CONTENTS);
-                    msg = obtainMessage(MSG_UPDATE_CONTENTS);
-                    sendMessageDelayed(msg, CONTENTS_UPDATE_DELAY);
-                    break;
-            }
-        }
-    };
-    BackgroundHandler mBackgroundHandler;
-    
-    final Handler mHandler = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MSG_UPDATE_TIMES:
-                    Iterator<ActiveItem> it = mActiveItems.values().iterator();
-                    while (it.hasNext()) {
-                        ActiveItem ai = it.next();
-                        if (ai.mRootView.getWindowToken() == null) {
-                            // Clean out any dead views, just in case.
-                            it.remove();
-                            continue;
-                        }
-                        ai.updateTime(RunningServices.this);
-                    }
-                    removeMessages(MSG_UPDATE_TIMES);
-                    msg = obtainMessage(MSG_UPDATE_TIMES);
-                    sendMessageDelayed(msg, TIME_UPDATE_DELAY);
-                    break;
-                case MSG_REFRESH_UI:
-                    refreshUi(msg.arg1 != 0);
-                    break;
-            }
-        }
-    };
-    
-    private boolean matchText(byte[] buffer, int index, String text) {
-        int N = text.length();
-        if ((index+N) >= buffer.length) {
-            return false;
-        }
-        for (int i=0; i<N; i++) {
-            if (buffer[index+i] != text.charAt(i)) {
-                return false;
-            }
-        }
-        return true;
-    }
-    
-    private long extractMemValue(byte[] buffer, int index) {
-        while (index < buffer.length && buffer[index] != '\n') {
-            if (buffer[index] >= '0' && buffer[index] <= '9') {
-                int start = index;
-                index++;
-                while (index < buffer.length && buffer[index] >= '0'
-                    && buffer[index] <= '9') {
-                    index++;
-                }
-                String str = new String(buffer, start, index-start);
-                return ((long)Integer.parseInt(str)) * 1024;
-            }
-            index++;
-        }
-        return 0;
-    }
-    
-    private long readAvailMem() {
-        try {
-            long memFree = 0;
-            long memCached = 0;
-            FileInputStream is = new FileInputStream("/proc/meminfo");
-            int len = is.read(mBuffer);
-            is.close();
-            final int BUFLEN = mBuffer.length;
-            for (int i=0; i<len && (memFree == 0 || memCached == 0); i++) {
-                if (matchText(mBuffer, i, "MemFree")) {
-                    i += 7;
-                    memFree = extractMemValue(mBuffer, i);
-                } else if (matchText(mBuffer, i, "Cached")) {
-                    i += 6;
-                    memCached = extractMemValue(mBuffer, i);
-                }
-                while (i < BUFLEN && mBuffer[i] != '\n') {
-                    i++;
-                }
-            }
-            return memFree + memCached;
-        } catch (java.io.FileNotFoundException e) {
-        } catch (java.io.IOException e) {
-        }
-        return 0;
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mAm = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
-        mState = (State)getLastNonConfigurationInstance();
-        if (mState == null) {
-            mState = new State();
-        }
-        mProcessBgColor = 0xff505050;
-        setContentView(R.layout.running_services);
-        getListView().setDivider(null);
-        getListView().setAdapter(new ServiceListAdapter(mState));
-        mColorBar = (LinearColorBar)findViewById(R.id.color_bar);
-        mBackgroundProcessText = (TextView)findViewById(R.id.backgroundText);
-        mForegroundProcessText = (TextView)findViewById(R.id.foregroundText);
-        
-        // Magic!  Implementation detail!  Don't count on this!
-        SECONDARY_SERVER_MEM =
-            Integer.valueOf(SystemProperties.get("ro.SECONDARY_SERVER_MEM"))*PAGE_SIZE;
-    }
-
-    void refreshUi(boolean dataChanged) {
-        if (dataChanged) {
-            ServiceListAdapter adapter = (ServiceListAdapter)(getListView().getAdapter());
-            adapter.refreshItems();
-            adapter.notifyDataSetChanged();
-        }
-        
-        // This is the amount of available memory until we start killing
-        // background services.
-        long availMem = readAvailMem() - SECONDARY_SERVER_MEM;
-        if (availMem < 0) {
-            availMem = 0;
-        }
-        
-        synchronized (mState.mLock) {
-            if (mLastNumBackgroundProcesses != mState.mNumBackgroundProcesses
-                    || mLastBackgroundProcessMemory != mState.mBackgroundProcessMemory
-                    || mLastAvailMemory != availMem) {
-                mLastNumBackgroundProcesses = mState.mNumBackgroundProcesses;
-                mLastBackgroundProcessMemory = mState.mBackgroundProcessMemory;
-                mLastAvailMemory = availMem;
-                String availStr = availMem != 0
-                        ? Formatter.formatShortFileSize(this, availMem) : "0";
-                String sizeStr = Formatter.formatShortFileSize(this, mLastBackgroundProcessMemory);
-                mBackgroundProcessText.setText(getResources().getString(
-                        R.string.service_background_processes,
-                        mLastNumBackgroundProcesses, availStr, sizeStr));
-            }
-            if (mLastNumForegroundProcesses != mState.mNumForegroundProcesses
-                    || mLastForegroundProcessMemory != mState.mForegroundProcessMemory) {
-                mLastNumForegroundProcesses = mState.mNumForegroundProcesses;
-                mLastForegroundProcessMemory = mState.mForegroundProcessMemory;
-                String sizeStr = Formatter.formatShortFileSize(this, mLastForegroundProcessMemory);
-                mForegroundProcessText.setText(getResources().getString(
-                        R.string.service_foreground_processes, mLastNumForegroundProcesses, sizeStr));
-            }
-            mLastNumServiceProcesses = mState.mNumServiceProcesses;
-            mLastServiceProcessMemory = mState.mServiceProcessMemory;
-            
-            float totalMem = availMem + mLastBackgroundProcessMemory
-                    + mLastForegroundProcessMemory + mLastServiceProcessMemory;
-            mColorBar.setRatios(mLastForegroundProcessMemory/totalMem,
-                    mLastServiceProcessMemory/totalMem,
-                    (availMem+mLastBackgroundProcessMemory)/totalMem);
-        }
-    }
-    
-    @Override
-    protected void onListItemClick(ListView l, View v, int position, long id) {
-        BaseItem bi = (BaseItem)l.getAdapter().getItem(position);
-        if (!bi.mIsProcess) {
-            ServiceItem si = (ServiceItem)bi;
-            if (si.mRunningService.clientLabel != 0) {
-                mCurSelected = null;
-                PendingIntent pi = mAm.getRunningServiceControlPanel(
-                        si.mRunningService.service);
-                if (pi != null) {
-                    try {
-                        this.startIntentSender(pi.getIntentSender(), null,
-                                Intent.FLAG_ACTIVITY_NEW_TASK
-                                        | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET,
-                                Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET, 0);
-                    } catch (IntentSender.SendIntentException e) {
-                        Log.w(TAG, e);
-                    } catch (IllegalArgumentException e) {
-                        Log.w(TAG, e);
-                    } catch (ActivityNotFoundException e) {
-                        Log.w(TAG, e);
-                    }
-                }
-            } else {
-                mCurSelected = bi;
-                AlertDialog.Builder builder = new AlertDialog.Builder(this);
-                builder.setTitle(R.string.confirm_stop_service);
-                String msg = getResources().getString(
-                        R.string.confirm_stop_service_msg,
-                        si.mPackageInfo.loadLabel(getPackageManager()));
-                builder.setMessage(msg);
-                builder.setPositiveButton(R.string.confirm_stop_stop, this);
-                builder.setNegativeButton(R.string.confirm_stop_cancel, null);
-                builder.setCancelable(true);
-                mCurDialog = builder.show();
-            }
-        } else {
-            mCurSelected = null;
-        }
-    }
-
-    public void onClick(DialogInterface dialog, int which) {
-        if (mCurSelected != null) {
-            stopService(new Intent().setComponent(
-                    ((ServiceItem)mCurSelected).mRunningService.service));
-            if (mBackgroundHandler != null) {
-                mBackgroundHandler.sendEmptyMessage(MSG_UPDATE_CONTENTS);
-            }
-        }
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        mHandler.removeMessages(MSG_UPDATE_TIMES);
-        if (mBackgroundThread != null) {
-            mBackgroundThread.quit();
-            mBackgroundThread = null;
-            mBackgroundHandler = null;
-        }
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        refreshUi(mState.update(this, mAm));
-        mBackgroundThread = new HandlerThread("RunningServices");
-        mBackgroundThread.start();
-        mBackgroundHandler = new BackgroundHandler(mBackgroundThread.getLooper());
-        mHandler.removeMessages(MSG_UPDATE_TIMES);
-        Message msg = mHandler.obtainMessage(MSG_UPDATE_TIMES);
-        mHandler.sendMessageDelayed(msg, TIME_UPDATE_DELAY);
-        mBackgroundHandler.removeMessages(MSG_UPDATE_CONTENTS);
-        msg = mBackgroundHandler.obtainMessage(MSG_UPDATE_CONTENTS);
-        mBackgroundHandler.sendMessageDelayed(msg, CONTENTS_UPDATE_DELAY);
-    }
-
-    @Override
-    public Object onRetainNonConfigurationInstance() {
-        return mState;
-    }
-
-    public void onMovedToScrapHeap(View view) {
-        mActiveItems.remove(view);
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        if (mCurDialog != null) {
-            mCurDialog.dismiss();
-        }
-    }
-}
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index b29db2d..454ea60 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -31,6 +31,7 @@
 import android.database.Cursor;
 import android.location.LocationManager;
 import android.os.Bundle;
+import android.os.SystemProperties;
 import android.preference.CheckBoxPreference;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
@@ -61,6 +62,10 @@
     private static final String KEY_VISIBLE_PATTERN = "visiblepattern";
     private static final String KEY_TACTILE_FEEDBACK_ENABLED = "unlock_tactile_feedback";
 
+    // 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 CheckBoxPreference mVisiblePattern;
     private CheckBoxPreference mTactileFeedback;
 
@@ -75,6 +80,9 @@
     // Credential storage
     private CredentialStorage mCredentialStorage = new CredentialStorage();
 
+    // Encrypted file system
+    private  CheckBoxPreference mEncryptedFSEnabled;
+
     private CheckBoxPreference mNetwork;
     private CheckBoxPreference mGps;
     private CheckBoxPreference mAssistedGps;
@@ -204,6 +212,11 @@
         root.addPreference(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;
     }
 
@@ -297,18 +310,21 @@
         private static final int MINIMUM_PASSWORD_LENGTH = 8;
 
         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;
         private boolean mSubmit = false;
         private boolean mExternal = false;
 
+        private boolean mWillEnableEncryptedFS;
         private int mShowingDialog = 0;
 
         // Key Store controls
@@ -317,6 +333,10 @@
         private Preference mPasswordButton;
         private Preference mResetButton;
 
+
+        // Encrypted file system controls
+        private  CheckBoxPreference mEncryptedFSEnabled;
+
         void resume() {
             mState = mKeyStore.test();
             updatePreferences(mState);
@@ -368,6 +388,10 @@
                     lock();
                 }
                 return true;
+            } else if (preference == mEncryptedFSEnabled) {
+                Boolean bval = (Boolean)value;
+                mWillEnableEncryptedFS = bval.booleanValue();
+                showSwitchEncryptedFSDialog();
             }
             return true;
         }
@@ -386,9 +410,26 @@
         }
 
         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) {
+                    Intent intent = new Intent("android.intent.action.MASTER_CLEAR");
+                    intent.putExtra("enableEFS", mWillEnableEncryptedFS);
+                    sendBroadcast(intent);
+                    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;
+                }
             }
         }
 
@@ -502,16 +543,25 @@
                 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.setChecked(state == KeyStore.NO_ERROR);
-
-            mResetButton.setEnabled(state != KeyStore.UNINITIALIZED);
-            mAccessCheckBox.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,5 +631,24 @@
                     .setNegativeButton(getString(android.R.string.cancel), this)
                     .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/Settings.java b/src/com/android/settings/Settings.java
index a2816f8..d924834 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -16,6 +16,7 @@
 
 package com.android.settings;
 
+import android.net.sip.SipManager;
 import android.os.Bundle;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
@@ -26,7 +27,6 @@
     private static final String KEY_PARENT = "parent";
     private static final String KEY_CALL_SETTINGS = "call_settings";
     private static final String KEY_SYNC_SETTINGS = "sync_settings";
-    private static final String KEY_SEARCH_SETTINGS = "search_settings";
     private static final String KEY_DOCK_SETTINGS = "dock_settings";
     
     private static final String KEY_OPERATOR_SETTINGS = "operator_settings";
@@ -40,7 +40,6 @@
 
         PreferenceGroup parent = (PreferenceGroup) findPreference(KEY_PARENT);
         Utils.updatePreferenceToSpecificActivityOrRemove(this, parent, KEY_SYNC_SETTINGS, 0);
-        Utils.updatePreferenceToSpecificActivityOrRemove(this, parent, KEY_SEARCH_SETTINGS, 0);
 
         Preference dockSettings = parent.findPreference(KEY_DOCK_SETTINGS);
         if (getResources().getBoolean(R.bool.has_dock_settings) == false && dockSettings != null) {
@@ -56,7 +55,9 @@
     @Override
     protected void onResume() {
         super.onResume();
-        findPreference(KEY_CALL_SETTINGS).setEnabled(!AirplaneModeEnabler.isAirplaneModeOn(this));
+        findPreference(KEY_CALL_SETTINGS).setEnabled(
+                !AirplaneModeEnabler.isAirplaneModeOn(this)
+                || SipManager.isVoipSupported(this));
     }
 
 }
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 78cf8cf..85cd546 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -20,7 +20,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.ConnectivityManager;
-import android.net.wifi.WifiManager;
+import android.nfc.NfcAdapter;
 import android.os.Bundle;
 import android.os.ServiceManager;
 import android.os.SystemProperties;
@@ -29,28 +29,30 @@
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceScreen;
 import android.provider.Settings;
-import android.util.Log;
-
 import com.android.internal.telephony.TelephonyIntents;
 import com.android.internal.telephony.TelephonyProperties;
 import com.android.settings.bluetooth.BluetoothEnabler;
 import com.android.settings.wifi.WifiEnabler;
+import com.android.settings.nfc.NfcEnabler;
 
 public class WirelessSettings extends PreferenceActivity {
 
     private static final String KEY_TOGGLE_AIRPLANE = "toggle_airplane";
     private static final String KEY_TOGGLE_BLUETOOTH = "toggle_bluetooth";
     private static final String KEY_TOGGLE_WIFI = "toggle_wifi";
+    private static final String KEY_TOGGLE_NFC = "toggle_nfc";
     private static final String KEY_WIFI_SETTINGS = "wifi_settings";
     private static final String KEY_BT_SETTINGS = "bt_settings";
     private static final String KEY_VPN_SETTINGS = "vpn_settings";
     private static final String KEY_TETHER_SETTINGS = "tether_settings";
+
     public static final String EXIT_ECM_RESULT = "exit_ecm_result";
     public static final int REQUEST_CODE_EXIT_ECM = 1;
 
     private AirplaneModeEnabler mAirplaneModeEnabler;
     private CheckBoxPreference mAirplaneModePreference;
     private WifiEnabler mWifiEnabler;
+    private NfcEnabler mNfcEnabler;
     private BluetoothEnabler mBtEnabler;
 
     /**
@@ -91,11 +93,13 @@
         CheckBoxPreference airplane = (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE);
         CheckBoxPreference wifi = (CheckBoxPreference) findPreference(KEY_TOGGLE_WIFI);
         CheckBoxPreference bt = (CheckBoxPreference) findPreference(KEY_TOGGLE_BLUETOOTH);
+        CheckBoxPreference nfc = (CheckBoxPreference) findPreference(KEY_TOGGLE_NFC);
 
         mAirplaneModeEnabler = new AirplaneModeEnabler(this, airplane);
         mAirplaneModePreference = (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE);
         mWifiEnabler = new WifiEnabler(this, wifi);
         mBtEnabler = new BluetoothEnabler(this, bt);
+        mNfcEnabler = new NfcEnabler(this, nfc);
 
         String toggleable = Settings.System.getString(getContentResolver(),
                 Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
@@ -113,9 +117,14 @@
             findPreference(KEY_BT_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
         }
 
-        // Disable Bluetooth Settings if Bluetooth service is not available.
+        // Remove Bluetooth Settings if Bluetooth service is not available.
         if (ServiceManager.getService(BluetoothAdapter.BLUETOOTH_SERVICE) == null) {
-            findPreference(KEY_BT_SETTINGS).setEnabled(false);
+            getPreferenceScreen().removePreference(bt);
+        }
+
+        // Remove NFC if its not available
+        if (NfcAdapter.getDefaultAdapter() == null) {
+            getPreferenceScreen().removePreference(nfc);
         }
 
         // Disable Tethering if it's not allowed
@@ -145,21 +154,23 @@
     @Override
     protected void onResume() {
         super.onResume();
-        
+
         mAirplaneModeEnabler.resume();
         mWifiEnabler.resume();
         mBtEnabler.resume();
+        mNfcEnabler.resume();
     }
-    
+
     @Override
     protected void onPause() {
         super.onPause();
-        
+
         mAirplaneModeEnabler.pause();
         mWifiEnabler.pause();
         mBtEnabler.pause();
+        mNfcEnabler.pause();
     }
-    
+
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (requestCode == REQUEST_CODE_EXIT_ECM) {
diff --git a/src/com/android/settings/applications/ApplicationsState.java b/src/com/android/settings/applications/ApplicationsState.java
new file mode 100644
index 0000000..814bbbf
--- /dev/null
+++ b/src/com/android/settings/applications/ApplicationsState.java
@@ -0,0 +1,754 @@
+package com.android.settings.applications;
+
+import android.app.Application;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageStatsObserver;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageStats;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.os.Message;
+import android.os.Process;
+import android.os.SystemClock;
+import android.text.format.Formatter;
+import android.util.Log;
+
+import java.io.File;
+import java.text.Collator;
+import java.text.Normalizer;
+import java.text.Normalizer.Form;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * Keeps track of information about all installed applications, lazy-loading
+ * as needed.
+ */
+public class ApplicationsState {
+    static final String TAG = "ApplicationsState";
+    static final boolean DEBUG = false;
+
+    public static interface Callbacks {
+        public void onRunningStateChanged(boolean running);
+        public void onPackageListChanged();
+        public void onRebuildComplete(ArrayList<AppEntry> apps);
+        public void onPackageIconChanged();
+        public void onPackageSizeChanged(String packageName);
+        public void onAllSizesComputed();
+    }
+
+    public static interface AppFilter {
+        public void init();
+        public boolean filterApp(ApplicationInfo info);
+    }
+
+    static final int SIZE_UNKNOWN = -1;
+    static final int SIZE_INVALID = -2;
+
+    static final Pattern REMOVE_DIACRITICALS_PATTERN
+            = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
+
+    public static String normalize(String str) {
+        String tmp = Normalizer.normalize(str, Form.NFD);
+        return REMOVE_DIACRITICALS_PATTERN.matcher(tmp)
+                .replaceAll("").toLowerCase();
+    }
+
+    public static class AppEntry {
+        final File apkFile;
+        final long id;
+        String label;
+        long size;
+        
+        long cacheSize;
+        long codeSize;
+        long dataSize;
+
+        boolean mounted;
+        
+        String getNormalizedLabel() {
+            if (normalizedLabel != null) {
+                return normalizedLabel;
+            }
+            normalizedLabel = normalize(label);
+            return normalizedLabel;
+        }
+
+        // Need to synchronize on 'this' for the following.
+        ApplicationInfo info;
+        Drawable icon;
+        String sizeStr;
+        boolean sizeStale;
+        long sizeLoadStart;
+
+        String normalizedLabel;
+
+        AppEntry(Context context, ApplicationInfo info, long id) {
+            apkFile = new File(info.sourceDir);
+            this.id = id;
+            this.info = info;
+            this.size = SIZE_UNKNOWN;
+            this.sizeStale = true;
+            ensureLabel(context);
+        }
+        
+        void ensureLabel(Context context) {
+            if (this.label == null || !this.mounted) {
+                if (!this.apkFile.exists()) {
+                    this.mounted = false;
+                    this.label = info.packageName;
+                } else {
+                    this.mounted = true;
+                    CharSequence label = info.loadLabel(context.getPackageManager());
+                    this.label = label != null ? label.toString() : info.packageName;
+                }
+            }
+        }
+        
+        boolean ensureIconLocked(Context context, PackageManager pm) {
+            if (this.icon == null) {
+                if (this.apkFile.exists()) {
+                    this.icon = this.info.loadIcon(pm);
+                    return true;
+                } else {
+                    this.mounted = false;
+                    this.icon = context.getResources().getDrawable(
+                            com.android.internal.R.drawable.sym_app_on_sd_unavailable_icon);
+                }
+            } else if (!this.mounted) {
+                // If the app wasn't mounted but is now mounted, reload
+                // its icon.
+                if (this.apkFile.exists()) {
+                    this.mounted = true;
+                    this.icon = this.info.loadIcon(pm);
+                    return true;
+                }
+            }
+            return false;
+        }
+    }
+
+    public static final Comparator<AppEntry> ALPHA_COMPARATOR = new Comparator<AppEntry>() {
+        private final Collator sCollator = Collator.getInstance();
+        @Override
+        public int compare(AppEntry object1, AppEntry object2) {
+            return sCollator.compare(object1.label, object2.label);
+        }
+    };
+
+    public static final Comparator<AppEntry> SIZE_COMPARATOR = new Comparator<AppEntry>() {
+        private final Collator sCollator = Collator.getInstance();
+        @Override
+        public int compare(AppEntry object1, AppEntry object2) {
+            if (object1.size < object2.size) return 1;
+            if (object1.size > object2.size) return -1;
+            return sCollator.compare(object1.label, object2.label);
+        }
+    };
+
+    public static final AppFilter THIRD_PARTY_FILTER = new AppFilter() {
+        public void init() {
+        }
+        
+        @Override
+        public boolean filterApp(ApplicationInfo info) {
+            if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
+                return true;
+            } else if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
+                return true;
+            }
+            return false;
+        }
+    };
+
+    public static final AppFilter ON_SD_CARD_FILTER = new AppFilter() {
+        final CanBeOnSdCardChecker mCanBeOnSdCardChecker
+                = new CanBeOnSdCardChecker();
+        
+        public void init() {
+            mCanBeOnSdCardChecker.init();
+        }
+        
+        @Override
+        public boolean filterApp(ApplicationInfo info) {
+            return mCanBeOnSdCardChecker.check(info);
+        }
+    };
+
+    final Context mContext;
+    final PackageManager mPm;
+    PackageIntentReceiver mPackageIntentReceiver;
+
+    boolean mResumed;
+    Callbacks mCurCallbacks;
+
+    // Information about all applications.  Synchronize on mAppEntries
+    // to protect access to these.
+    final HashMap<String, AppEntry> mEntriesMap = new HashMap<String, AppEntry>();
+    final ArrayList<AppEntry> mAppEntries = new ArrayList<AppEntry>();
+    List<ApplicationInfo> mApplications = new ArrayList<ApplicationInfo>();
+    long mCurId = 1;
+    String mCurComputingSizePkg;
+
+    // Rebuilding of app list.  Synchronized on mRebuildSync.
+    final Object mRebuildSync = new Object();
+    boolean mRebuildRequested;
+    boolean mRebuildAsync;
+    AppFilter mRebuildFilter;
+    Comparator<AppEntry> mRebuildComparator;
+    ArrayList<AppEntry> mRebuildResult;
+
+    /**
+     * Receives notifications when applications are added/removed.
+     */
+    private class PackageIntentReceiver extends BroadcastReceiver {
+         void registerReceiver() {
+             IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
+             filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+             filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
+             filter.addDataScheme("package");
+             mContext.registerReceiver(this, filter);
+             // Register for events related to sdcard installation.
+             IntentFilter sdFilter = new IntentFilter();
+             sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
+             sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
+             mContext.registerReceiver(this, sdFilter);
+         }
+         @Override
+         public void onReceive(Context context, Intent intent) {
+             String actionStr = intent.getAction();
+             if (Intent.ACTION_PACKAGE_ADDED.equals(actionStr)) {
+                 Uri data = intent.getData();
+                 String pkgName = data.getEncodedSchemeSpecificPart();
+                 addPackage(pkgName);
+             } else if (Intent.ACTION_PACKAGE_REMOVED.equals(actionStr)) {
+                 Uri data = intent.getData();
+                 String pkgName = data.getEncodedSchemeSpecificPart();
+                 removePackage(pkgName);
+             } else if (Intent.ACTION_PACKAGE_CHANGED.equals(actionStr)) {
+                 Uri data = intent.getData();
+                 String pkgName = data.getEncodedSchemeSpecificPart();
+                 removePackage(pkgName);
+                 addPackage(pkgName);
+             } else if (Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE.equals(actionStr) ||
+                     Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE.equals(actionStr)) {
+                 // When applications become available or unavailable (perhaps because
+                 // the SD card was inserted or ejected) we need to refresh the
+                 // AppInfo with new label, icon and size information as appropriate
+                 // given the newfound (un)availability of the application.
+                 // A simple way to do that is to treat the refresh as a package
+                 // removal followed by a package addition.
+                 String pkgList[] = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST);
+                 if (pkgList == null || pkgList.length == 0) {
+                     // Ignore
+                     return;
+                 }
+                 boolean avail = Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE.equals(actionStr);
+                 if (avail) {
+                     for (String pkgName : pkgList) {
+                         removePackage(pkgName);
+                         addPackage(pkgName);
+                     }
+                 }
+             }
+         }
+    }
+
+    class MainHandler extends Handler {
+        static final int MSG_REBUILD_COMPLETE = 1;
+        static final int MSG_PACKAGE_LIST_CHANGED = 2;
+        static final int MSG_PACKAGE_ICON_CHANGED = 3;
+        static final int MSG_PACKAGE_SIZE_CHANGED = 4;
+        static final int MSG_ALL_SIZES_COMPUTED = 5;
+        static final int MSG_RUNNING_STATE_CHANGED = 6;
+
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_REBUILD_COMPLETE: {
+                    if (mCurCallbacks != null) {
+                        mCurCallbacks.onRebuildComplete((ArrayList<AppEntry>)msg.obj);
+                    }
+                } break;
+                case MSG_PACKAGE_LIST_CHANGED: {
+                    if (mCurCallbacks != null) {
+                        mCurCallbacks.onPackageListChanged();
+                    }
+                } break;
+                case MSG_PACKAGE_ICON_CHANGED: {
+                    if (mCurCallbacks != null) {
+                        mCurCallbacks.onPackageIconChanged();
+                    }
+                } break;
+                case MSG_PACKAGE_SIZE_CHANGED: {
+                    if (mCurCallbacks != null) {
+                        mCurCallbacks.onPackageSizeChanged((String)msg.obj);
+                    }
+                } break;
+                case MSG_ALL_SIZES_COMPUTED: {
+                    if (mCurCallbacks != null) {
+                        mCurCallbacks.onAllSizesComputed();
+                    }
+                } break;
+                case MSG_RUNNING_STATE_CHANGED: {
+                    if (mCurCallbacks != null) {
+                        mCurCallbacks.onRunningStateChanged(msg.arg1 != 0);
+                    }
+                } break;
+            }
+        }
+    }
+
+    final MainHandler mMainHandler = new MainHandler();
+
+    // --------------------------------------------------------------
+
+    static final Object sLock = new Object();
+    static ApplicationsState sInstance;
+
+    static ApplicationsState getInstance(Application app) {
+        synchronized (sLock) {
+            if (sInstance == null) {
+                sInstance = new ApplicationsState(app);
+            }
+            return sInstance;
+        }
+    }
+
+    private ApplicationsState(Application app) {
+        mContext = app;
+        mPm = mContext.getPackageManager();
+        mThread = new HandlerThread("ApplicationsState.Loader",
+                Process.THREAD_PRIORITY_BACKGROUND);
+        mThread.start();
+        mBackgroundHandler = new BackgroundHandler(mThread.getLooper());
+    }
+
+    void resume(Callbacks callbacks) {
+        synchronized (mEntriesMap) {
+            mCurCallbacks = callbacks;
+            mResumed = true;
+            if (mPackageIntentReceiver == null) {
+                mPackageIntentReceiver = new PackageIntentReceiver();
+                mPackageIntentReceiver.registerReceiver();
+            }
+            mApplications = mPm.getInstalledApplications(
+                    PackageManager.GET_UNINSTALLED_PACKAGES |
+                    PackageManager.GET_DISABLED_COMPONENTS);
+            if (mApplications == null) {
+                mApplications = new ArrayList<ApplicationInfo>();
+            }
+            for (int i=0; i<mAppEntries.size(); i++) {
+                mAppEntries.get(i).sizeStale = true;
+            }
+            for (int i=0; i<mApplications.size(); i++) {
+                final ApplicationInfo info = mApplications.get(i);
+                final AppEntry entry = mEntriesMap.get(info.packageName);
+                if (entry != null) {
+                    entry.info = info;
+                }
+            }
+            mCurComputingSizePkg = null;
+            if (!mBackgroundHandler.hasMessages(BackgroundHandler.MSG_LOAD_ENTRIES)) {
+                mBackgroundHandler.sendEmptyMessage(BackgroundHandler.MSG_LOAD_ENTRIES);
+            }
+        }
+    }
+
+    void pause() {
+        synchronized (mEntriesMap) {
+            mCurCallbacks = null;
+            mResumed = false;
+        }
+    }
+
+    // Creates a new list of app entries with the given filter and comparator.
+    ArrayList<AppEntry> rebuild(AppFilter filter, Comparator<AppEntry> comparator) {
+        synchronized (mRebuildSync) {
+            mRebuildRequested = true;
+            mRebuildAsync = false;
+            mRebuildFilter = filter;
+            mRebuildComparator = comparator;
+            mRebuildResult = null;
+            if (!mBackgroundHandler.hasMessages(BackgroundHandler.MSG_REBUILD_LIST)) {
+                mBackgroundHandler.sendEmptyMessage(BackgroundHandler.MSG_REBUILD_LIST);
+            }
+
+            // We will wait for .25s for the list to be built.
+            long waitend = SystemClock.uptimeMillis()+250;
+
+            while (mRebuildResult == null) {
+                long now = SystemClock.uptimeMillis();
+                if (now >= waitend) {
+                    break;
+                }
+                try {
+                    mRebuildSync.wait(waitend - now);
+                } catch (InterruptedException e) {
+                }
+            }
+
+            mRebuildAsync = true;
+
+            return mRebuildResult;
+        }
+    }
+
+    void handleRebuildList() {
+        AppFilter filter;
+        Comparator<AppEntry> comparator;
+        synchronized (mRebuildSync) {
+            if (!mRebuildRequested) {
+                return;
+            }
+
+            filter = mRebuildFilter;
+            comparator = mRebuildComparator;
+            mRebuildRequested = false;
+            mRebuildFilter = null;
+            mRebuildComparator = null;
+        }
+
+        Process.setThreadPriority(Process.THREAD_PRIORITY_FOREGROUND);
+
+        if (filter != null) {
+            filter.init();
+        }
+        
+        List<ApplicationInfo> apps;
+        synchronized (mEntriesMap) {
+            apps = new ArrayList<ApplicationInfo>(mApplications);
+        }
+
+        ArrayList<AppEntry> filteredApps = new ArrayList<AppEntry>();
+        if (DEBUG) Log.i(TAG, "Rebuilding...");
+        for (int i=0; i<apps.size(); i++) {
+            ApplicationInfo info = apps.get(i);
+            if (filter == null || filter.filterApp(info)) {
+                synchronized (mEntriesMap) {
+                    AppEntry entry = getEntryLocked(info);
+                    entry.ensureLabel(mContext);
+                    if (DEBUG) Log.i(TAG, "Using " + info.packageName + ": " + entry);
+                    filteredApps.add(entry);
+                }
+            }
+        }
+
+        Collections.sort(filteredApps, comparator);
+
+        synchronized (mRebuildSync) {
+            if (!mRebuildRequested) {
+                if (!mRebuildAsync) {
+                    mRebuildResult = filteredApps;
+                    mRebuildSync.notifyAll();
+                } else {
+                    if (!mMainHandler.hasMessages(MainHandler.MSG_REBUILD_COMPLETE)) {
+                        Message msg = mMainHandler.obtainMessage(
+                                MainHandler.MSG_REBUILD_COMPLETE, filteredApps);
+                        mMainHandler.sendMessage(msg);
+                    }
+                }
+            }
+        }
+
+        Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
+    }
+
+    AppEntry getEntry(String packageName) {
+        synchronized (mEntriesMap) {
+            AppEntry entry = mEntriesMap.get(packageName);
+            if (entry == null) {
+                for (int i=0; i<mApplications.size(); i++) {
+                    ApplicationInfo info = mApplications.get(i);
+                    if (packageName.equals(info.packageName)) {
+                        entry = getEntryLocked(info);
+                        break;
+                    }
+                }
+            }
+            return entry;
+        }
+    }
+    
+    void ensureIcon(AppEntry entry) {
+        if (entry.icon != null) {
+            return;
+        }
+        synchronized (entry) {
+            entry.ensureIconLocked(mContext, mPm);
+        }
+    }
+    
+    void requestSize(String packageName) {
+        synchronized (mEntriesMap) {
+            AppEntry entry = mEntriesMap.get(packageName);
+            if (entry != null) {
+                mPm.getPackageSizeInfo(packageName, mBackgroundHandler.mStatsObserver);
+            }
+        }
+    }
+
+    long sumCacheSizes() {
+        long sum = 0;
+        synchronized (mEntriesMap) {
+            for (int i=mAppEntries.size()-1; i>=0; i--) {
+                sum += mAppEntries.get(i).cacheSize;
+            }
+        }
+        return sum;
+    }
+    
+    int indexOfApplicationInfoLocked(String pkgName) {
+        for (int i=mApplications.size()-1; i>=0; i--) {
+            if (mApplications.get(i).packageName.equals(pkgName)) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+    void addPackage(String pkgName) {
+        try {
+            synchronized (mEntriesMap) {
+                if (DEBUG) Log.i(TAG, "Adding package " + pkgName);
+                if (!mResumed) {
+                    // If we are not resumed, we will do a full query the
+                    // next time we resume, so there is no reason to do work
+                    // here.
+                    return;
+                }
+                if (indexOfApplicationInfoLocked(pkgName) >= 0) {
+                    if (DEBUG) Log.i(TAG, "Package already exists!");
+                    return;
+                }
+                ApplicationInfo info = mPm.getApplicationInfo(pkgName,
+                        PackageManager.GET_UNINSTALLED_PACKAGES |
+                        PackageManager.GET_DISABLED_COMPONENTS);
+                mApplications.add(info);
+                if (!mBackgroundHandler.hasMessages(BackgroundHandler.MSG_LOAD_ENTRIES)) {
+                    mBackgroundHandler.sendEmptyMessage(BackgroundHandler.MSG_LOAD_ENTRIES);
+                }
+                if (!mMainHandler.hasMessages(MainHandler.MSG_PACKAGE_LIST_CHANGED)) {
+                    mMainHandler.sendEmptyMessage(MainHandler.MSG_PACKAGE_LIST_CHANGED);
+                }
+            }
+        } catch (NameNotFoundException e) {
+        }
+    }
+
+    void removePackage(String pkgName) {
+        synchronized (mEntriesMap) {
+            int idx = indexOfApplicationInfoLocked(pkgName);
+            if (DEBUG) Log.i(TAG, "removePackage: " + pkgName + " @ " + idx);
+            if (idx >= 0) {
+                AppEntry entry = mEntriesMap.get(pkgName);
+                if (DEBUG) Log.i(TAG, "removePackage: " + entry);
+                if (entry != null) {
+                    mEntriesMap.remove(pkgName);
+                    mAppEntries.remove(entry);
+                }
+                mApplications.remove(idx);
+                if (!mMainHandler.hasMessages(MainHandler.MSG_PACKAGE_LIST_CHANGED)) {
+                    mMainHandler.sendEmptyMessage(MainHandler.MSG_PACKAGE_LIST_CHANGED);
+                }
+            }
+        }
+    }
+
+    AppEntry getEntryLocked(ApplicationInfo info) {
+        AppEntry entry = mEntriesMap.get(info.packageName);
+        if (DEBUG) Log.i(TAG, "Looking up entry of pkg " + info.packageName + ": " + entry);
+        if (entry == null) {
+            if (DEBUG) Log.i(TAG, "Creating AppEntry for " + info.packageName);
+            entry = new AppEntry(mContext, info, mCurId++);
+            mEntriesMap.put(info.packageName, entry);
+            mAppEntries.add(entry);
+        } else if (entry.info != info) {
+            entry.info = info;
+        }
+        return entry;
+    }
+
+    // --------------------------------------------------------------
+
+    private long getTotalSize(PackageStats ps) {
+        if (ps != null) {
+            return ps.codeSize+ps.dataSize;
+        }
+        return SIZE_INVALID;
+    }
+
+    private String getSizeStr(long size) {
+        if (size >= 0) {
+            return Formatter.formatFileSize(mContext, size);
+        }
+        return null;
+    }
+
+    final HandlerThread mThread;
+    final BackgroundHandler mBackgroundHandler;
+    class BackgroundHandler extends Handler {
+        static final int MSG_REBUILD_LIST = 1;
+        static final int MSG_LOAD_ENTRIES = 2;
+        static final int MSG_LOAD_ICONS = 3;
+        static final int MSG_LOAD_SIZES = 4;
+
+        boolean mRunning;
+
+        final IPackageStatsObserver.Stub mStatsObserver = new IPackageStatsObserver.Stub() {
+            public void onGetStatsCompleted(PackageStats stats, boolean succeeded) {
+                boolean sizeChanged = false;
+                synchronized (mEntriesMap) {
+                    AppEntry entry = mEntriesMap.get(stats.packageName);
+                    if (entry != null) {
+                        synchronized (entry) {
+                            entry.sizeStale = false;
+                            entry.sizeLoadStart = 0;
+                            long newSize = getTotalSize(stats);
+                            if (entry.size != newSize ||
+                                    entry.cacheSize != stats.cacheSize ||
+                                    entry.codeSize != stats.codeSize ||
+                                    entry.dataSize != stats.dataSize) {
+                                entry.size = newSize;
+                                entry.cacheSize = stats.cacheSize;
+                                entry.codeSize = stats.codeSize;
+                                entry.dataSize = stats.dataSize;
+                                entry.sizeStr = getSizeStr(entry.size);
+                                if (DEBUG) Log.i(TAG, "Set size of " + entry.label + " " + entry
+                                        + ": " + entry.sizeStr);
+                                sizeChanged = true;
+                            }
+                        }
+                        if (sizeChanged) {
+                            Message msg = mMainHandler.obtainMessage(
+                                    MainHandler.MSG_PACKAGE_SIZE_CHANGED, stats.packageName);
+                            mMainHandler.sendMessage(msg);
+                        }
+                    }
+                    if (mCurComputingSizePkg == null
+                            || mCurComputingSizePkg.equals(stats.packageName)) {
+                        mCurComputingSizePkg = null;
+                        sendEmptyMessage(MSG_LOAD_SIZES);
+                    }
+                }
+            }
+        };
+
+        BackgroundHandler(Looper looper) {
+            super(looper);
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            // Always try rebuilding list first thing, if needed.
+            handleRebuildList();
+
+            switch (msg.what) {
+                case MSG_REBUILD_LIST: {
+                } break;
+                case MSG_LOAD_ENTRIES: {
+                    int numDone = 0;
+                    synchronized (mEntriesMap) {
+                        for (int i=0; i<mApplications.size() && numDone<6; i++) {
+                            if (!mRunning) {
+                                mRunning = true;
+                                Message m = mMainHandler.obtainMessage(
+                                        MainHandler.MSG_RUNNING_STATE_CHANGED, 1);
+                                mMainHandler.sendMessage(m);
+                            }
+                            ApplicationInfo info = mApplications.get(i);
+                            if (mEntriesMap.get(info.packageName) == null) {
+                                numDone++;
+                                getEntryLocked(info);
+                            }
+                        }
+                    }
+
+                    if (numDone >= 6) {
+                        sendEmptyMessage(MSG_LOAD_ENTRIES);
+                    } else {
+                        sendEmptyMessage(MSG_LOAD_ICONS);
+                    }
+                } break;
+                case MSG_LOAD_ICONS: {
+                    int numDone = 0;
+                    synchronized (mEntriesMap) {
+                        for (int i=0; i<mAppEntries.size() && numDone<2; i++) {
+                            AppEntry entry = mAppEntries.get(i);
+                            if (entry.icon == null || !entry.mounted) {
+                                synchronized (entry) {
+                                    if (entry.ensureIconLocked(mContext, mPm)) {
+                                        if (!mRunning) {
+                                            mRunning = true;
+                                            Message m = mMainHandler.obtainMessage(
+                                                    MainHandler.MSG_RUNNING_STATE_CHANGED, 1);
+                                            mMainHandler.sendMessage(m);
+                                        }
+                                        numDone++;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    if (numDone > 0) {
+                        if (!mMainHandler.hasMessages(MainHandler.MSG_PACKAGE_ICON_CHANGED)) {
+                            mMainHandler.sendEmptyMessage(MainHandler.MSG_PACKAGE_ICON_CHANGED);
+                        }
+                    }
+                    if (numDone >= 2) {
+                        sendEmptyMessage(MSG_LOAD_ICONS);
+                    } else {
+                        sendEmptyMessage(MSG_LOAD_SIZES);
+                    }
+                } break;
+                case MSG_LOAD_SIZES: {
+                    synchronized (mEntriesMap) {
+                        if (mCurComputingSizePkg != null) {
+                            return;
+                        }
+
+                        long now = SystemClock.uptimeMillis();
+                        for (int i=0; i<mAppEntries.size(); i++) {
+                            AppEntry entry = mAppEntries.get(i);
+                            if (entry.size == SIZE_UNKNOWN || entry.sizeStale) {
+                                if (entry.sizeLoadStart == 0 ||
+                                        (entry.sizeLoadStart < (now-20*1000))) {
+                                    if (!mRunning) {
+                                        mRunning = true;
+                                        Message m = mMainHandler.obtainMessage(
+                                                MainHandler.MSG_RUNNING_STATE_CHANGED, 1);
+                                        mMainHandler.sendMessage(m);
+                                    }
+                                    entry.sizeLoadStart = now;
+                                    mCurComputingSizePkg = entry.info.packageName;
+                                    mPm.getPackageSizeInfo(mCurComputingSizePkg, mStatsObserver);
+                                }
+                                return;
+                            }
+                        }
+                        if (!mMainHandler.hasMessages(MainHandler.MSG_ALL_SIZES_COMPUTED)) {
+                            mMainHandler.sendEmptyMessage(MainHandler.MSG_ALL_SIZES_COMPUTED);
+                            mRunning = false;
+                            Message m = mMainHandler.obtainMessage(
+                                    MainHandler.MSG_RUNNING_STATE_CHANGED, 0);
+                            mMainHandler.sendMessage(m);
+                        }
+                    }
+                } break;
+            }
+        }
+
+    }
+}
diff --git a/src/com/android/settings/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
similarity index 61%
rename from src/com/android/settings/InstalledAppDetails.java
rename to src/com/android/settings/applications/InstalledAppDetails.java
index 0ca35b8..912cc3e 100644
--- a/src/com/android/settings/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -1,5 +1,3 @@
-
-
 /**
  * Copyright (C) 2007 The Android Open Source Project
  *
@@ -16,10 +14,12 @@
  * under the License.
  */
 
-package com.android.settings;
+package com.android.settings.applications;
 
 import com.android.internal.content.PackageHelper;
 import com.android.settings.R;
+import com.android.settings.applications.ApplicationsState.AppEntry;
+
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.AlertDialog;
@@ -33,22 +33,21 @@
 import android.content.pm.IPackageDataObserver;
 import android.content.pm.IPackageManager;
 import android.content.pm.IPackageMoveObserver;
-import android.content.pm.IPackageStatsObserver;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
-import android.content.pm.PackageParser;
-import android.content.pm.PackageStats;
+import android.content.pm.ResolveInfo;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.net.Uri;
+import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
-import android.os.IBinder;
 import android.os.Message;
 import android.os.RemoteException;
 import android.os.ServiceManager;
-import android.os.storage.IMountService;
 import android.text.format.Formatter;
 import android.util.Log;
+
+import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.List;
 import android.content.ComponentName;
@@ -68,20 +67,26 @@
  * For non-system applications, there is no option to clear data. Instead there is an option to
  * uninstall the application.
  */
-public class InstalledAppDetails extends Activity implements View.OnClickListener {
+public class InstalledAppDetails extends Activity
+        implements View.OnClickListener, ApplicationsState.Callbacks {
     private static final String TAG="InstalledAppDetails";
-    private static final int _UNKNOWN_APP=R.string.unknown;
-    private ApplicationInfo mAppInfo;
+    static final boolean SUPPORT_DISABLE_APPS = false;
+    private static final boolean localLOGV = false;
+    
+    private PackageManager mPm;
+    private ApplicationsState mState;
+    private ApplicationsState.AppEntry mAppEntry;
+    private PackageInfo mPackageInfo;
+    private CanBeOnSdCardChecker mCanBeOnSdCardChecker;
     private Button mUninstallButton;
     private boolean mMoveInProgress = false;
     private boolean mUpdatedSysApp = false;
     private Button mActivitiesButton;
-    private boolean localLOGV = false;
+    private boolean mCanClearData = true;
     private TextView mAppVersion;
     private TextView mTotalSize;
     private TextView mAppSize;
     private TextView mDataSize;
-    private PkgSizeObserver mSizeObserver;
     private ClearUserDataObserver mClearDataObserver;
     // Views related to cache info
     private TextView mCacheSize;
@@ -92,18 +97,20 @@
     private Button mMoveAppButton;
     private int mMoveErrorCode;
     
-    PackageStats mSizeInfo;
-    private PackageManager mPm;
     private PackageMoveObserver mPackageMoveObserver;
     
+    private boolean mHaveSizes = false;
+    private long mLastCodeSize = -1;
+    private long mLastDataSize = -1;
+    private long mLastCacheSize = -1;
+    private long mLastTotalSize = -1;
+    
     //internal constants used in Handler
     private static final int OP_SUCCESSFUL = 1;
     private static final int OP_FAILED = 2;
     private static final int CLEAR_USER_DATA = 1;
-    private static final int GET_PKG_SIZE = 2;
     private static final int CLEAR_CACHE = 3;
     private static final int PACKAGE_MOVE = 4;
-    private static final String ATTR_PACKAGE_STATS="PackageStats";
     
     // invalid size value used initially and also when size retrieval through PackageManager
     // fails for whatever reason
@@ -132,12 +139,9 @@
                 case CLEAR_USER_DATA:
                     processClearMsg(msg);
                     break;
-                case GET_PKG_SIZE:
-                    refreshSizeInfo(msg);
-                    break;
                 case CLEAR_CACHE:
                     // Refresh size info
-                    mPm.getPackageSizeInfo(mAppInfo.packageName, mSizeObserver);
+                    mState.requestSize(mAppEntry.info.packageName);
                     break;
                 case PACKAGE_MOVE:
                     processMoveMsg(msg);
@@ -156,17 +160,6 @@
         }
     }
     
-    class PkgSizeObserver extends IPackageStatsObserver.Stub {
-        public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) {
-             Message msg = mHandler.obtainMessage(GET_PKG_SIZE);
-             Bundle data = new Bundle();
-             data.putParcelable(ATTR_PACKAGE_STATS, pStats);
-             msg.setData(data);
-             mHandler.sendMessage(msg);
-            
-         }
-     }
-
     class ClearCacheObserver extends IPackageDataObserver.Stub {
         public void onRemoveCompleted(final String packageName, final boolean succeeded) {
             final Message msg = mHandler.obtainMessage(CLEAR_CACHE);
@@ -191,12 +184,20 @@
     }
     
     private void initDataButtons() {
-        if (mAppInfo.manageSpaceActivityName != null) {
-            mClearDataButton.setText(R.string.manage_space_text);
-        } else {
+        if ((mAppEntry.info.flags&(ApplicationInfo.FLAG_SYSTEM
+                | ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA))
+                == ApplicationInfo.FLAG_SYSTEM) {
             mClearDataButton.setText(R.string.clear_user_data_text);
+            mClearDataButton.setEnabled(false);
+            mCanClearData = false;
+        } else {
+            if (mAppEntry.info.manageSpaceActivityName != null) {
+                mClearDataButton.setText(R.string.manage_space_text);
+            } else {
+                mClearDataButton.setText(R.string.clear_user_data_text);
+            }
+            mClearDataButton.setOnClickListener(this);
         }
-        mClearDataButton.setOnClickListener(this);
     }
 
     private CharSequence getMoveErrMsg(int errCode) {
@@ -218,50 +219,19 @@
     }
 
     private void initMoveButton() {
-        String pkgName = mAppInfo.packageName;
         boolean dataOnly = false;
-        ApplicationInfo info1 = null;
-        PackageInfo pkgInfo = null;
-
-        try {
-            info1 = mPm.getApplicationInfo(pkgName, 0);
-            pkgInfo = mPm.getPackageInfo(mAppInfo.packageName,
-                    PackageManager.GET_UNINSTALLED_PACKAGES);
-        } catch (NameNotFoundException e) {
-        }
-        dataOnly = (info1 == null) && (mAppInfo != null);
+        dataOnly = (mPackageInfo == null) && (mAppEntry != null);
         boolean moveDisable = true;
         if (dataOnly) {
             mMoveAppButton.setText(R.string.move_app);
-        } else if ((mAppInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
+        } else if ((mAppEntry.info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
             mMoveAppButton.setText(R.string.move_app_to_internal);
             // Always let apps move to internal storage from sdcard.
             moveDisable = false;
         } else {
             mMoveAppButton.setText(R.string.move_app_to_sdcard);
-            if ((mAppInfo.flags & ApplicationInfo.FLAG_FORWARD_LOCK) == 0 &&
-                    (mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0 &&
-                    pkgInfo != null) {
-                if (pkgInfo.installLocation == PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL ||
-                        pkgInfo.installLocation == PackageInfo.INSTALL_LOCATION_AUTO) {
-                    moveDisable = false;
-                } else if (pkgInfo.installLocation == PackageInfo.INSTALL_LOCATION_UNSPECIFIED) {
-                    IPackageManager ipm  = IPackageManager.Stub.asInterface(
-                            ServiceManager.getService("package"));
-                    int loc;
-                    try {
-                        loc = ipm.getInstallLocation();
-                    } catch (RemoteException e) {
-                        Log.e(TAG, "Is Pakage Manager running?");
-                        return;
-                    }
-                    if (loc == PackageHelper.APP_INSTALL_EXTERNAL) {
-                        // For apps with no preference and the default value set
-                        // to install on sdcard.
-                        moveDisable = false;
-                    }
-                }
-            }
+            mCanBeOnSdCardChecker.init();
+            moveDisable = !mCanBeOnSdCardChecker.check(mAppEntry.info);
         }
         if (moveDisable) {
             mMoveAppButton.setEnabled(false);
@@ -272,16 +242,43 @@
     }
 
     private void initUninstallButtons() {
-        mUpdatedSysApp = (mAppInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
+        mUpdatedSysApp = (mAppEntry.info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
         boolean enabled = true;
         if (mUpdatedSysApp) {
             mUninstallButton.setText(R.string.app_factory_reset);
         } else {
-            if ((mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0){
-                // Disable button for system applications.
+            if ((mAppEntry.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
                 enabled = false;
+                if (SUPPORT_DISABLE_APPS) {
+                    try {
+                        // Try to prevent the user from bricking their phone
+                        // by not allowing disabling of apps signed with the
+                        // system cert and any launcher app in the system.
+                        PackageInfo sys = mPm.getPackageInfo("android",
+                                PackageManager.GET_SIGNATURES);
+                        Intent intent = new Intent(Intent.ACTION_MAIN);
+                        intent.addCategory(Intent.CATEGORY_HOME);
+                        intent.setPackage(mAppEntry.info.packageName);
+                        List<ResolveInfo> homes = mPm.queryIntentActivities(intent, 0);
+                        if ((homes != null && homes.size() > 0) ||
+                                (mPackageInfo != null &&
+                                        sys.signatures[0].equals(mPackageInfo.signatures[0]))) {
+                            // Disable button for core system applications.
+                            mUninstallButton.setText(R.string.disable_text);
+                        } else if (mAppEntry.info.enabled) {
+                            mUninstallButton.setText(R.string.disable_text);
+                            enabled = true;
+                        } else {
+                            mUninstallButton.setText(R.string.enable_text);
+                            enabled = true;
+                        }
+                    } catch (PackageManager.NameNotFoundException e) {
+                        Log.w(TAG, "Unable to get package info", e);
+                    }
+                }
+            } else {
+                mUninstallButton.setText(R.string.uninstall_text);
             }
-            mUninstallButton.setText(R.string.uninstall_text);
         }
         mUninstallButton.setEnabled(enabled);
         if (enabled) {
@@ -290,49 +287,24 @@
         }
     }
 
-    private boolean initAppInfo(String packageName) {
-        try {
-            mAppInfo = mPm.getApplicationInfo(packageName,
-                    PackageManager.GET_UNINSTALLED_PACKAGES);
-            return true;
-        } catch (NameNotFoundException e) {
-            Log.e(TAG, "Exception when retrieving package: " + packageName, e);
-            showDialogInner(DLG_APP_NOT_FOUND);
-            return false;
-        }
-    }
-
     /** Called when the activity is first created. */
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         
-        // Get package manager
+        mState = ApplicationsState.getInstance(getApplication());
         mPm = getPackageManager();
         
-        // Get application's name from intent
-        Intent intent = getIntent();
-        final String packageName = intent.getStringExtra(ManageApplications.APP_PKG_NAME);
-        if (! initAppInfo(packageName)) {
-            return; // could not find package, finish called
-        }
+        mCanBeOnSdCardChecker = new CanBeOnSdCardChecker();
         
-        // Try retrieving package stats again
-        CharSequence totalSizeStr, appSizeStr, dataSizeStr;
-        mComputingStr = getText(R.string.computing_size);
-        totalSizeStr = appSizeStr = dataSizeStr = mComputingStr;
-        if(localLOGV) Log.i(TAG, "Have to compute package sizes");
-        mSizeObserver = new PkgSizeObserver();
         setContentView(R.layout.installed_app_details);
-        //TODO download str and download url
+        
+        mComputingStr = getText(R.string.computing_size);
         
         // Set default values on sizes
         mTotalSize = (TextView)findViewById(R.id.total_size_text);
-        mTotalSize.setText(totalSizeStr);
         mAppSize = (TextView)findViewById(R.id.application_size_text);
-        mAppSize.setText(appSizeStr);
         mDataSize = (TextView)findViewById(R.id.data_size_text);
-        mDataSize.setText(dataSizeStr);
         
         // Get Control button panel
         View btnPanel = findViewById(R.id.control_buttons_panel);
@@ -346,51 +318,22 @@
         mClearDataButton = (Button) data_buttons_panel.findViewById(R.id.left_button);
         mMoveAppButton = (Button) data_buttons_panel.findViewById(R.id.right_button);
         
-         // Cache section
-         mCacheSize = (TextView) findViewById(R.id.cache_size_text);
-         mCacheSize.setText(mComputingStr);
-         mClearCacheButton = (Button) findViewById(R.id.clear_cache_button);
-
-         // Get list of preferred activities
-         mActivitiesButton = (Button)findViewById(R.id.clear_activities_button);
-         List<ComponentName> prefActList = new ArrayList<ComponentName>();
-         
-         // Intent list cannot be null. so pass empty list
-         List<IntentFilter> intentList = new ArrayList<IntentFilter>();
-         mPm.getPreferredActivities(intentList,  prefActList, packageName);
-         if(localLOGV) Log.i(TAG, "Have "+prefActList.size()+" number of activities in prefered list");
-         TextView autoLaunchView = (TextView)findViewById(R.id.auto_launch);
-         if(prefActList.size() <= 0) {
-             // Disable clear activities button
-             autoLaunchView.setText(R.string.auto_launch_disable_text);
-             mActivitiesButton.setEnabled(false);
-         } else {
-             autoLaunchView.setText(R.string.auto_launch_enable_text);
-             mActivitiesButton.setOnClickListener(this);
-         }
-         
-         // Security permissions section
-         LinearLayout permsView = (LinearLayout) findViewById(R.id.permissions_section);
-         AppSecurityPermissions asp = new AppSecurityPermissions(this, packageName);
-         if(asp.getPermissionCount() > 0) {
-             permsView.setVisibility(View.VISIBLE);
-             // Make the security sections header visible
-             LinearLayout securityList = (LinearLayout) permsView.findViewById(
-                     R.id.security_settings_list);
-             securityList.addView(asp.getPermissionsView());
-         } else {
-             permsView.setVisibility(View.GONE);
-         }
+        // Cache section
+        mCacheSize = (TextView) findViewById(R.id.cache_size_text);
+        mClearCacheButton = (Button) findViewById(R.id.clear_cache_button);
+        
+        mActivitiesButton = (Button)findViewById(R.id.clear_activities_button);
     }
 
     // Utility method to set applicaiton label and icon.
     private void setAppLabelAndIcon(PackageInfo pkgInfo) {
         View appSnippet = findViewById(R.id.app_snippet);
         ImageView icon = (ImageView) appSnippet.findViewById(R.id.app_icon);
-        icon.setImageDrawable(mAppInfo.loadIcon(mPm));
+        mState.ensureIcon(mAppEntry);
+        icon.setImageDrawable(mAppEntry.icon);
         // Set application name.
         TextView label = (TextView) appSnippet.findViewById(R.id.app_name);
-        label.setText(mAppInfo.loadLabel(mPm));
+        label.setText(mAppEntry.label);
         // Version number of application
         mAppVersion = (TextView) appSnippet.findViewById(R.id.app_size);
 
@@ -407,35 +350,109 @@
     public void onResume() {
         super.onResume();
         
-        if (mAppInfo == null) {
+        mState.resume(this);
+        if (!refreshUi()) {
             setIntentAndFinish(true, true);
-            return; // onCreate must have failed, make sure to exit
-        }
-        if (! initAppInfo(mAppInfo.packageName)) {
-            return; // could not find package, finish called
-        }
-        
-        PackageInfo pkgInfo = null;
-        // Get application info again to refresh changed properties of application
-        try {
-            pkgInfo = mPm.getPackageInfo(mAppInfo.packageName,
-                    PackageManager.GET_UNINSTALLED_PACKAGES);
-        } catch (NameNotFoundException e) {
-            Log.e(TAG, "Exception when retrieving package:" + mAppInfo.packageName, e);
-            showDialogInner(DLG_APP_NOT_FOUND);
-            return; // could not find package, finish called
-        }
-        
-        checkForceStop();
-        setAppLabelAndIcon(pkgInfo);
-        refreshButtons();
-        
-        // Refresh size info
-        if (mAppInfo != null && mAppInfo.packageName != null) {
-            mPm.getPackageSizeInfo(mAppInfo.packageName, mSizeObserver);
         }
     }
 
+    @Override
+    public void onPause() {
+        super.onPause();
+        mState.pause();
+    }
+
+    @Override
+    public void onAllSizesComputed() {
+    }
+
+    @Override
+    public void onPackageIconChanged() {
+    }
+
+    @Override
+    public void onPackageListChanged() {
+        refreshUi();
+    }
+
+    @Override
+    public void onRebuildComplete(ArrayList<AppEntry> apps) {
+    }
+
+    @Override
+    public void onPackageSizeChanged(String packageName) {
+        if (packageName.equals(mAppEntry.info.packageName)) {
+            refreshSizeInfo();
+        }
+    }
+
+    @Override
+    public void onRunningStateChanged(boolean running) {
+    }
+
+    private boolean refreshUi() {
+        if (mMoveInProgress) {
+            return true;
+        }
+        
+        Intent intent = getIntent();
+        final String packageName = intent.getData().getSchemeSpecificPart();
+        mAppEntry = mState.getEntry(packageName);
+        
+        if (mAppEntry == null) {
+            return false; // onCreate must have failed, make sure to exit
+        }
+        
+        // Get application info again to refresh changed properties of application
+        try {
+            mPackageInfo = mPm.getPackageInfo(mAppEntry.info.packageName,
+                    PackageManager.GET_DISABLED_COMPONENTS |
+                    PackageManager.GET_UNINSTALLED_PACKAGES |
+                    PackageManager.GET_SIGNATURES);
+        } catch (NameNotFoundException e) {
+            Log.e(TAG, "Exception when retrieving package:" + mAppEntry.info.packageName, e);
+            return false; // onCreate must have failed, make sure to exit
+        }
+        
+        // Get list of preferred activities
+        List<ComponentName> prefActList = new ArrayList<ComponentName>();
+        
+        // Intent list cannot be null. so pass empty list
+        List<IntentFilter> intentList = new ArrayList<IntentFilter>();
+        mPm.getPreferredActivities(intentList, prefActList, packageName);
+        if(localLOGV) Log.i(TAG, "Have "+prefActList.size()+" number of activities in prefered list");
+        TextView autoLaunchView = (TextView)findViewById(R.id.auto_launch);
+        if (prefActList.size() <= 0) {
+            // Disable clear activities button
+            autoLaunchView.setText(R.string.auto_launch_disable_text);
+            mActivitiesButton.setEnabled(false);
+        } else {
+            autoLaunchView.setText(R.string.auto_launch_enable_text);
+            mActivitiesButton.setEnabled(true);
+            mActivitiesButton.setOnClickListener(this);
+        }
+         
+        // Security permissions section
+        LinearLayout permsView = (LinearLayout) findViewById(R.id.permissions_section);
+        AppSecurityPermissions asp = new AppSecurityPermissions(this, packageName);
+        if (asp.getPermissionCount() > 0) {
+            permsView.setVisibility(View.VISIBLE);
+            // Make the security sections header visible
+            LinearLayout securityList = (LinearLayout) permsView.findViewById(
+                    R.id.security_settings_list);
+            securityList.removeAllViews();
+            securityList.addView(asp.getPermissionsView());
+        } else {
+            permsView.setVisibility(View.GONE);
+        }
+        
+        checkForceStop();
+        setAppLabelAndIcon(mPackageInfo);
+        refreshButtons();
+        refreshSizeInfo();
+        return true;
+    }
+    
     private void setIntentAndFinish(boolean finish, boolean appChanged) {
         if(localLOGV) Log.i(TAG, "appChanged="+appChanged);
         Intent intent = new Intent();
@@ -446,60 +463,50 @@
         }
     }
     
-    /*
-     * Private method to handle get size info notification from observer when
-     * the async operation from PackageManager is complete. The current user data
-     * info has to be refreshed in the manage applications screen as well as the current screen.
-     */
-    private void refreshSizeInfo(Message msg) {
-        boolean changed = false;
-        PackageStats newPs = msg.getData().getParcelable(ATTR_PACKAGE_STATS);
-        long newTot = newPs.cacheSize+newPs.codeSize+newPs.dataSize;
-        if(mSizeInfo == null) {
-            mSizeInfo = newPs;
-            String str = getSizeStr(newTot);
-            mTotalSize.setText(str);
-            mAppSize.setText(getSizeStr(newPs.codeSize));
-            mDataSize.setText(getSizeStr(newPs.dataSize));
-            mCacheSize.setText(getSizeStr(newPs.cacheSize));
-        } else {
-            long oldTot = mSizeInfo.cacheSize+mSizeInfo.codeSize+mSizeInfo.dataSize;
-            if(newTot != oldTot) {
-                String str = getSizeStr(newTot);
-                mTotalSize.setText(str);
-                changed = true;
+    private void refreshSizeInfo() {
+        if (mAppEntry.size == ApplicationsState.SIZE_INVALID
+                || mAppEntry.size == ApplicationsState.SIZE_UNKNOWN) {
+            mLastCodeSize = mLastDataSize = mLastCacheSize = mLastTotalSize = -1;
+            if (!mHaveSizes) {
+                mAppSize.setText(mComputingStr);
+                mDataSize.setText(mComputingStr);
+                mCacheSize.setText(mComputingStr);
+                mTotalSize.setText(mComputingStr);
             }
-            if(newPs.codeSize != mSizeInfo.codeSize) {
-                mAppSize.setText(getSizeStr(newPs.codeSize));
-                changed = true;
-            }
-            if(newPs.dataSize != mSizeInfo.dataSize) {
-                mDataSize.setText(getSizeStr(newPs.dataSize));
-                changed = true;
-            }
-            if(newPs.cacheSize != mSizeInfo.cacheSize) {
-                mCacheSize.setText(getSizeStr(newPs.cacheSize));
-                changed = true;
-            }
-            if(changed) {
-                mSizeInfo = newPs;
-            }
-        }
-        // If data size is zero disable clear data button
-        if (newPs.dataSize == 0) {
             mClearDataButton.setEnabled(false);
-        }
-        long data = mSizeInfo.dataSize;
-        refreshCacheInfo(newPs.cacheSize);
-    }
-    
-    private void refreshCacheInfo(long cacheSize) {
-        // Set cache info
-        mCacheSize.setText(getSizeStr(cacheSize));
-        if (cacheSize <= 0) {
             mClearCacheButton.setEnabled(false);
+            
         } else {
-            mClearCacheButton.setOnClickListener(this);
+            mHaveSizes = true;
+            if (mLastCodeSize != mAppEntry.codeSize) {
+                mLastCodeSize = mAppEntry.codeSize;
+                mAppSize.setText(getSizeStr(mAppEntry.codeSize));
+            }
+            if (mLastDataSize != mAppEntry.dataSize) {
+                mLastDataSize = mAppEntry.dataSize;
+                mDataSize.setText(getSizeStr(mAppEntry.dataSize));
+            }
+            if (mLastCacheSize != mAppEntry.cacheSize) {
+                mLastCacheSize = mAppEntry.cacheSize;
+                mCacheSize.setText(getSizeStr(mAppEntry.cacheSize));
+            }
+            if (mLastTotalSize != mAppEntry.size) {
+                mLastTotalSize = mAppEntry.size;
+                mTotalSize.setText(getSizeStr(mAppEntry.size));
+            }
+            
+            if (mAppEntry.dataSize <= 0 || !mCanClearData) {
+                mClearDataButton.setEnabled(false);
+            } else {
+                mClearDataButton.setEnabled(true);
+                mClearDataButton.setOnClickListener(this);
+            }
+            if (mAppEntry.cacheSize <= 0) {
+                mClearCacheButton.setEnabled(false);
+            } else {
+                mClearCacheButton.setEnabled(true);
+                mClearCacheButton.setOnClickListener(this);
+            }
         }
     }
     
@@ -509,14 +516,15 @@
      */
     private void processClearMsg(Message msg) {
         int result = msg.arg1;
-        String packageName = mAppInfo.packageName;
+        String packageName = mAppEntry.info.packageName;
         mClearDataButton.setText(R.string.clear_user_data_text);
         if(result == OP_SUCCESSFUL) {
             Log.i(TAG, "Cleared user data for package : "+packageName);
-            mPm.getPackageSizeInfo(packageName, mSizeObserver);
+            mState.requestSize(mAppEntry.info.packageName);
         } else {
             mClearDataButton.setEnabled(true);
         }
+        checkForceStop();
     }
 
     private void refreshButtons() {
@@ -533,23 +541,18 @@
 
     private void processMoveMsg(Message msg) {
         int result = msg.arg1;
-        String packageName = mAppInfo.packageName;
+        String packageName = mAppEntry.info.packageName;
         // Refresh the button attributes.
         mMoveInProgress = false;
-        if(result == PackageManager.MOVE_SUCCEEDED) {
+        if (result == PackageManager.MOVE_SUCCEEDED) {
             Log.i(TAG, "Moved resources for " + packageName);
             // Refresh size information again.
-            mPm.getPackageSizeInfo(packageName, mSizeObserver);
+            mState.requestSize(mAppEntry.info.packageName);
         } else {
             mMoveErrorCode = result;
             showDialogInner(DLG_MOVE_FAILED);
         }
-        
-        if (! initAppInfo(packageName)) {
-            return; // could not find package, finish called
-        }
-        
-        refreshButtons();
+        refreshUi();
     }
 
     /*
@@ -559,14 +562,14 @@
     private  void initiateClearUserData() {
         mClearDataButton.setEnabled(false);
         // Invoke uninstall or clear user data based on sysPackage
-        String packageName = mAppInfo.packageName;
+        String packageName = mAppEntry.info.packageName;
         Log.i(TAG, "Clearing user data for package : " + packageName);
-        if(mClearDataObserver == null) {
+        if (mClearDataObserver == null) {
             mClearDataObserver = new ClearUserDataObserver();
         }
         ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
         boolean res = am.clearApplicationUserData(packageName, mClearDataObserver);
-        if(!res) {
+        if (!res) {
             // Clearing data failed for some obscure reason. Just log error for now
             Log.i(TAG, "Couldnt clear application user data for package:"+packageName);
             showDialogInner(DLG_CANNOT_CLEAR_DATA);
@@ -606,7 +609,7 @@
                     new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog, int which) {
                     // Clear user data here
-                    uninstallPkg(mAppInfo.packageName);
+                    uninstallPkg(mAppEntry.info.packageName);
                 }
             })
             .setNegativeButton(R.string.dlg_cancel, null)
@@ -638,29 +641,29 @@
                 }
             })
             .create();
-            case DLG_FORCE_STOP:
-                return new AlertDialog.Builder(this)
-                .setTitle(getString(R.string.force_stop_dlg_title))
-                .setIcon(android.R.drawable.ic_dialog_alert)
-                .setMessage(getString(R.string.force_stop_dlg_text))
-                .setPositiveButton(R.string.dlg_ok,
-                    new DialogInterface.OnClickListener() {
+        case DLG_FORCE_STOP:
+            return new AlertDialog.Builder(this)
+            .setTitle(getString(R.string.force_stop_dlg_title))
+            .setIcon(android.R.drawable.ic_dialog_alert)
+            .setMessage(getString(R.string.force_stop_dlg_text))
+            .setPositiveButton(R.string.dlg_ok,
+                new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog, int which) {
                     // Force stop
-                    forceStopPackage(mAppInfo.packageName);
+                    forceStopPackage(mAppEntry.info.packageName);
                 }
             })
             .setNegativeButton(R.string.dlg_cancel, null)
             .create();
-            case DLG_MOVE_FAILED:
-                CharSequence msg = getString(R.string.move_app_failed_dlg_text,
-                        getMoveErrMsg(mMoveErrorCode));
-                return new AlertDialog.Builder(this)
-                .setTitle(getString(R.string.move_app_failed_dlg_title))
-                .setIcon(android.R.drawable.ic_dialog_alert)
-                .setMessage(msg)
-                .setNeutralButton(R.string.dlg_ok, null)
-                .create();
+        case DLG_MOVE_FAILED:
+            CharSequence msg = getString(R.string.move_app_failed_dlg_text,
+                    getMoveErrMsg(mMoveErrorCode));
+            return new AlertDialog.Builder(this)
+            .setTitle(getString(R.string.move_app_failed_dlg_title))
+            .setIcon(android.R.drawable.ic_dialog_alert)
+            .setMessage(msg)
+            .setNeutralButton(R.string.dlg_ok, null)
+            .create();
         }
         return null;
     }
@@ -690,32 +693,59 @@
     
     private void checkForceStop() {
         Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
-                Uri.fromParts("package", mAppInfo.packageName, null));
-        intent.putExtra(Intent.EXTRA_PACKAGES, new String[] { mAppInfo.packageName });
-        intent.putExtra(Intent.EXTRA_UID, mAppInfo.uid);
+                Uri.fromParts("package", mAppEntry.info.packageName, null));
+        intent.putExtra(Intent.EXTRA_PACKAGES, new String[] { mAppEntry.info.packageName });
+        intent.putExtra(Intent.EXTRA_UID, mAppEntry.info.uid);
         sendOrderedBroadcast(intent, null, mCheckKillProcessesReceiver, null,
                 Activity.RESULT_CANCELED, null, null);
     }
     
+    static class DisableChanger extends AsyncTask<Object, Object, Object> {
+        final PackageManager mPm;
+        final WeakReference<InstalledAppDetails> mActivity;
+        final ApplicationInfo mInfo;
+        final int mState;
+
+        DisableChanger(InstalledAppDetails activity, ApplicationInfo info, int state) {
+            mPm = activity.mPm;
+            mActivity = new WeakReference<InstalledAppDetails>(activity);
+            mInfo = info;
+            mState = state;
+        }
+
+        @Override
+        protected Object doInBackground(Object... params) {
+            mPm.setApplicationEnabledSetting(mInfo.packageName, mState, 0);
+            return null;
+        }
+    }
+
     /*
      * Method implementing functionality of buttons clicked
      * @see android.view.View.OnClickListener#onClick(android.view.View)
      */
     public void onClick(View v) {
-        String packageName = mAppInfo.packageName;
+        String packageName = mAppEntry.info.packageName;
         if(v == mUninstallButton) {
             if (mUpdatedSysApp) {
                 showDialogInner(DLG_FACTORY_RESET);
             } else {
-                uninstallPkg(packageName);
+                if ((mAppEntry.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
+                    new DisableChanger(this, mAppEntry.info, mAppEntry.info.enabled ?
+                            PackageManager.COMPONENT_ENABLED_STATE_DISABLED
+                            : PackageManager.COMPONENT_ENABLED_STATE_DEFAULT).execute((Object)null);
+                } else {
+                    uninstallPkg(packageName);
+                }
             }
         } else if(v == mActivitiesButton) {
             mPm.clearPackagePreferredActivities(packageName);
             mActivitiesButton.setEnabled(false);
         } else if(v == mClearDataButton) {
-            if (mAppInfo.manageSpaceActivityName != null) {
+            if (mAppEntry.info.manageSpaceActivityName != null) {
                 Intent intent = new Intent(Intent.ACTION_DEFAULT);
-                intent.setClassName(mAppInfo.packageName, mAppInfo.manageSpaceActivityName);
+                intent.setClassName(mAppEntry.info.packageName,
+                        mAppEntry.info.manageSpaceActivityName);
                 startActivityForResult(intent, -1);
             } else {
                 showDialogInner(DLG_CLEAR_DATA);
@@ -727,16 +757,17 @@
             }
             mPm.deleteApplicationCacheFiles(packageName, mClearCacheObserver);
         } else if (v == mForceStopButton) {
-            forceStopPackage(mAppInfo.packageName);
+            showDialogInner(DLG_FORCE_STOP);
+            //forceStopPackage(mAppInfo.packageName);
         } else if (v == mMoveAppButton) {
             if (mPackageMoveObserver == null) {
                 mPackageMoveObserver = new PackageMoveObserver();
             }
-            int moveFlags = (mAppInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0 ?
+            int moveFlags = (mAppEntry.info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0 ?
                     PackageManager.MOVE_INTERNAL : PackageManager.MOVE_EXTERNAL_MEDIA;
             mMoveInProgress = true;
             refreshButtons();
-            mPm.movePackage(mAppInfo.packageName, mPackageMoveObserver, moveFlags);
+            mPm.movePackage(mAppEntry.info.packageName, mPackageMoveObserver, moveFlags);
         }
     }
 }
diff --git a/src/com/android/settings/applications/LinearColorBar.java b/src/com/android/settings/applications/LinearColorBar.java
new file mode 100644
index 0000000..0b9f7b0
--- /dev/null
+++ b/src/com/android/settings/applications/LinearColorBar.java
@@ -0,0 +1,175 @@
+/**
+ *
+ */
+package com.android.settings.applications;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.LinearGradient;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.Rect;
+import android.graphics.Shader;
+import android.util.AttributeSet;
+import android.util.DisplayMetrics;
+import android.widget.LinearLayout;
+
+public class LinearColorBar extends LinearLayout {
+    static final int LEFT_COLOR = 0xffa0a0a0;
+    static final int MIDDLE_COLOR = 0xffa0a0a0;
+    static final int RIGHT_COLOR = 0xffa0c0a0;
+
+    private float mRedRatio;
+    private float mYellowRatio;
+    private float mGreenRatio;
+
+    private boolean mShowingGreen;
+
+    final Rect mRect = new Rect();
+    final Paint mPaint = new Paint();
+
+    int mLastInterestingLeft, mLastInterestingRight;
+    int mLineWidth;
+
+    final Path mColorPath = new Path();
+    final Path mEdgePath = new Path();
+    final Paint mColorGradientPaint = new Paint();
+    final Paint mEdgeGradientPaint = new Paint();
+
+    public LinearColorBar(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        setWillNotDraw(false);
+        mPaint.setStyle(Paint.Style.FILL);
+        mColorGradientPaint.setStyle(Paint.Style.FILL);
+        mColorGradientPaint.setAntiAlias(true);
+        mEdgeGradientPaint.setStyle(Paint.Style.STROKE);
+        mLineWidth = getResources().getDisplayMetrics().densityDpi >= DisplayMetrics.DENSITY_HIGH
+                ? 2 : 1;
+        mEdgeGradientPaint.setStrokeWidth(mLineWidth);
+        mEdgeGradientPaint.setAntiAlias(true);
+        
+    }
+
+    public void setRatios(float red, float yellow, float green) {
+        mRedRatio = red;
+        mYellowRatio = yellow;
+        mGreenRatio = green;
+        invalidate();
+    }
+
+    public void setShowingGreen(boolean showingGreen) {
+        if (mShowingGreen != showingGreen) {
+            mShowingGreen = showingGreen;
+            updateIndicator();
+            invalidate();
+        }
+    }
+
+    private void updateIndicator() {
+        int off = getPaddingTop() - getPaddingBottom();
+        if (off < 0) off = 0;
+        mRect.top = off;
+        mRect.bottom = getHeight();
+        if (mShowingGreen) {
+            mColorGradientPaint.setShader(new LinearGradient(
+                    0, 0, 0, off-2, RIGHT_COLOR&0xffffff, RIGHT_COLOR, Shader.TileMode.CLAMP));
+        } else {
+            mColorGradientPaint.setShader(new LinearGradient(
+                    0, 0, 0, off-2, MIDDLE_COLOR&0xffffff, MIDDLE_COLOR, Shader.TileMode.CLAMP));
+        }
+        mEdgeGradientPaint.setShader(new LinearGradient(
+                0, 0, 0, off/2, 0x00a0a0a0, 0xffa0a0a0, Shader.TileMode.CLAMP));
+    }
+
+    @Override
+    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+        super.onSizeChanged(w, h, oldw, oldh);
+        updateIndicator();
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+
+        int width = getWidth();
+
+        int left = 0;
+
+        int right = left + (int)(width*mRedRatio);
+        int right2 = right + (int)(width*mYellowRatio);
+        int right3 = right2 + (int)(width*mGreenRatio);
+
+        int indicatorLeft, indicatorRight;
+        if (mShowingGreen) {
+            indicatorLeft = right2;
+            indicatorRight = right3;
+        } else {
+            indicatorLeft = right;
+            indicatorRight = right2;
+        }
+
+        if (mLastInterestingLeft != indicatorLeft || mLastInterestingRight != indicatorRight) {
+            mColorPath.reset();
+            mEdgePath.reset();
+            if (indicatorLeft < indicatorRight) {
+                final int midTopY = mRect.top;
+                final int midBottomY = 0;
+                final int xoff = 2;
+                mColorPath.moveTo(indicatorLeft, mRect.top);
+                mColorPath.cubicTo(indicatorLeft, midBottomY,
+                        -xoff, midTopY,
+                        -xoff, 0);
+                mColorPath.lineTo(width+xoff-1, 0);
+                mColorPath.cubicTo(width+xoff-1, midTopY,
+                        indicatorRight, midBottomY,
+                        indicatorRight, mRect.top);
+                mColorPath.close();
+                final float lineOffset = mLineWidth+.5f;
+                mEdgePath.moveTo(-xoff+lineOffset, 0);
+                mEdgePath.cubicTo(-xoff+lineOffset, midTopY,
+                        indicatorLeft+lineOffset, midBottomY,
+                        indicatorLeft+lineOffset, mRect.top);
+                mEdgePath.moveTo(width+xoff-1-lineOffset, 0);
+                mEdgePath.cubicTo(width+xoff-1-lineOffset, midTopY,
+                        indicatorRight-lineOffset, midBottomY,
+                        indicatorRight-lineOffset, mRect.top);
+            }
+            mLastInterestingLeft = indicatorLeft;
+            mLastInterestingRight = indicatorRight;
+        }
+
+        if (!mEdgePath.isEmpty()) {
+            canvas.drawPath(mEdgePath, mEdgeGradientPaint);
+            canvas.drawPath(mColorPath, mColorGradientPaint);
+        }
+
+        if (left < right) {
+            mRect.left = left;
+            mRect.right = right;
+            mPaint.setColor(LEFT_COLOR);
+            canvas.drawRect(mRect, mPaint);
+            width -= (right-left);
+            left = right;
+        }
+
+        right = right2;
+
+        if (left < right) {
+            mRect.left = left;
+            mRect.right = right;
+            mPaint.setColor(MIDDLE_COLOR);
+            canvas.drawRect(mRect, mPaint);
+            width -= (right-left);
+            left = right;
+        }
+
+
+        right = left + width;
+        if (left < right) {
+            mRect.left = left;
+            mRect.right = right;
+            mPaint.setColor(RIGHT_COLOR);
+            canvas.drawRect(mRect, mPaint);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
new file mode 100644
index 0000000..345766e
--- /dev/null
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -0,0 +1,864 @@
+/*
+ * Copyright (C) 2006 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.applications;
+
+import com.android.internal.content.PackageHelper;
+import com.android.settings.R;
+import com.android.settings.applications.ApplicationsState.AppEntry;
+
+import android.app.TabActivity;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageInfo;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.StatFs;
+import android.provider.Settings;
+import android.text.format.Formatter;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.animation.AnimationUtils;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.AbsListView;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.CheckBox;
+import android.widget.Filter;
+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;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+
+final class CanBeOnSdCardChecker {
+    final IPackageManager mPm;
+    int mInstallLocation;
+    
+    CanBeOnSdCardChecker() {
+        mPm = IPackageManager.Stub.asInterface(
+                ServiceManager.getService("package"));
+    }
+    
+    void init() {
+        try {
+            mInstallLocation = mPm.getInstallLocation();
+        } catch (RemoteException e) {
+            Log.e("CanBeOnSdCardChecker", "Is Package Manager running?");
+            return;
+        }
+    }
+    
+    boolean check(ApplicationInfo info) {
+        boolean canBe = false;
+        if ((info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
+            canBe = true;
+        } else {
+            if ((info.flags & ApplicationInfo.FLAG_FORWARD_LOCK) == 0 &&
+                    (info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
+                if (info.installLocation == PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL ||
+                        info.installLocation == PackageInfo.INSTALL_LOCATION_AUTO) {
+                    canBe = true;
+                } else if (info.installLocation
+                        == PackageInfo.INSTALL_LOCATION_UNSPECIFIED) {
+                    if (mInstallLocation == PackageHelper.APP_INSTALL_EXTERNAL) {
+                        // For apps with no preference and the default value set
+                        // to install on sdcard.
+                        canBe = true;
+                    }
+                }
+            }
+        }
+        return canBe;
+    }
+}
+
+/**
+ * Activity to pick an application that will be used to display installation information and
+ * options to uninstall/delete user data for system applications. This activity
+ * can be launched through Settings or via the ACTION_MANAGE_PACKAGE_STORAGE
+ * intent.
+ */
+public class ManageApplications extends TabActivity implements
+        OnItemClickListener, DialogInterface.OnCancelListener,
+        TabHost.TabContentFactory, TabHost.OnTabChangeListener {
+    static final String TAG = "ManageApplications";
+    static final boolean DEBUG = false;
+    
+    // attributes used as keys when passing values to InstalledAppDetails activity
+    public static final String APP_CHG = "chg";
+    
+    // constant value that can be used to check return code from sub activity.
+    private static final int INSTALLED_APP_DETAILS = 1;
+
+    // sort order that can be changed through the menu can be sorted alphabetically
+    // or size(descending)
+    private static final int MENU_OPTIONS_BASE = 0;
+    // Filter options used for displayed list of applications
+    public static final int FILTER_APPS_ALL = MENU_OPTIONS_BASE + 0;
+    public static final int FILTER_APPS_THIRD_PARTY = MENU_OPTIONS_BASE + 1;
+    public static final int FILTER_APPS_SDCARD = MENU_OPTIONS_BASE + 2;
+
+    public static final int SORT_ORDER_ALPHA = MENU_OPTIONS_BASE + 4;
+    public static final int SORT_ORDER_SIZE = MENU_OPTIONS_BASE + 5;
+    public static final int SHOW_RUNNING_SERVICES = MENU_OPTIONS_BASE + 6;
+    public static final int SHOW_BACKGROUND_PROCESSES = MENU_OPTIONS_BASE + 7;
+    // sort order
+    private int mSortOrder = SORT_ORDER_ALPHA;
+    // Filter value
+    private int mFilterApps = FILTER_APPS_THIRD_PARTY;
+    
+    private ApplicationsState mApplicationsState;
+    private ApplicationsAdapter mApplicationsAdapter;
+    
+    // Size resource used for packages whose size computation failed for some reason
+    private CharSequence mInvalidSizeStr;
+    private CharSequence mComputingSizeStr;
+    
+    // layout inflater object used to inflate views
+    private LayoutInflater mInflater;
+    
+    private String mCurrentPkgName;
+    
+    private View mLoadingContainer;
+
+    private View mListContainer;
+
+    // ListView used to display list
+    private ListView mListView;
+    // Custom view used to display running processes
+    private RunningProcessesView mRunningProcessesView;
+    
+    LinearColorBar mColorBar;
+    TextView mStorageChartLabel;
+    TextView mUsedStorageText;
+    TextView mFreeStorageText;
+
+    // These are for keeping track of activity and tab switch state.
+    private int mCurView;
+    private boolean mCreatedRunning;
+
+    private boolean mResumedRunning;
+    private boolean mActivityResumed;
+    private Object mNonConfigInstance;
+    
+    private StatFs mDataFileStats;
+    private StatFs mSDCardFileStats;
+    private boolean mLastShowedInternalStorage = true;
+    private long mLastUsedStorage, mLastAppStorage, mLastFreeStorage;
+
+    final Runnable mRunningProcessesAvail = new Runnable() {
+        public void run() {
+            handleRunningProcessesAvail();
+        }
+    };
+
+    // View Holder used when displaying views
+    static class AppViewHolder {
+        ApplicationsState.AppEntry entry;
+        TextView appName;
+        ImageView appIcon;
+        TextView appSize;
+        TextView disabled;
+        CheckBox checkBox;
+        
+        void updateSizeText(ManageApplications ma) {
+            if (DEBUG) Log.i(TAG, "updateSizeText of " + entry.label + " " + entry
+                    + ": " + entry.sizeStr);
+            if (entry.sizeStr != null) {
+                appSize.setText(entry.sizeStr);
+            } else if (entry.size == ApplicationsState.SIZE_INVALID) {
+                appSize.setText(ma.mInvalidSizeStr);
+            }
+        }
+    }
+    
+    /*
+     * Custom adapter implementation for the ListView
+     * This adapter maintains a map for each displayed application and its properties
+     * An index value on each AppInfo object indicates the correct position or index
+     * in the list. If the list gets updated dynamically when the user is viewing the list of
+     * applications, we need to return the correct index of position. This is done by mapping
+     * the getId methods via the package name into the internal maps and indices.
+     * The order of applications in the list is mirrored in mAppLocalList
+     */
+    class ApplicationsAdapter extends BaseAdapter implements Filterable,
+            ApplicationsState.Callbacks, AbsListView.RecyclerListener {
+        private final ApplicationsState mState;
+        private final ArrayList<View> mActive = new ArrayList<View>();
+        private ArrayList<ApplicationsState.AppEntry> mBaseEntries;
+        private ArrayList<ApplicationsState.AppEntry> mEntries;
+        private boolean mResumed;
+        private int mLastFilterMode=-1, mLastSortMode=-1;
+        private boolean mWaitingForData;
+        CharSequence mCurFilterPrefix;
+
+        private Filter mFilter = new Filter() {
+            @Override
+            protected FilterResults performFiltering(CharSequence constraint) {
+                ArrayList<ApplicationsState.AppEntry> entries
+                        = applyPrefixFilter(constraint, mBaseEntries);
+                FilterResults fr = new FilterResults();
+                fr.values = entries;
+                fr.count = entries.size();
+                return fr;
+            }
+
+            @Override
+            protected void publishResults(CharSequence constraint, FilterResults results) {
+                mCurFilterPrefix = constraint;
+                mEntries = (ArrayList<ApplicationsState.AppEntry>)results.values;
+                notifyDataSetChanged();
+                updateStorageUsage();
+            }
+        };
+
+        public ApplicationsAdapter(ApplicationsState state) {
+            mState = state;
+        }
+
+        public void resume(int filter, int sort) {
+            if (DEBUG) Log.i(TAG, "Resume!  mResumed=" + mResumed);
+            if (!mResumed) {
+                mResumed = true;
+                mState.resume(this);
+                mLastFilterMode = filter;
+                mLastSortMode = sort;
+                rebuild(true);
+            } else {
+                rebuild(filter, sort);
+            }
+        }
+
+        public void pause() {
+            if (mResumed) {
+                mResumed = false;
+                mState.pause();
+            }
+        }
+
+        public void rebuild(int filter, int sort) {
+            if (filter == mLastFilterMode && sort == mLastSortMode) {
+                return;
+            }
+            mLastFilterMode = filter;
+            mLastSortMode = sort;
+            rebuild(true);
+        }
+        
+        public void rebuild(boolean eraseold) {
+            if (DEBUG) Log.i(TAG, "Rebuilding app list...");
+            ApplicationsState.AppFilter filterObj;
+            Comparator<AppEntry> comparatorObj;
+            switch (mLastFilterMode) {
+                case FILTER_APPS_THIRD_PARTY:
+                    filterObj = ApplicationsState.THIRD_PARTY_FILTER;
+                    break;
+                case FILTER_APPS_SDCARD:
+                    filterObj = ApplicationsState.ON_SD_CARD_FILTER;
+                    break;
+                default:
+                    filterObj = null;
+                    break;
+            }
+            switch (mLastSortMode) {
+                case SORT_ORDER_SIZE:
+                    comparatorObj = ApplicationsState.SIZE_COMPARATOR;
+                    break;
+                default:
+                    comparatorObj = ApplicationsState.ALPHA_COMPARATOR;
+                    break;
+            }
+            ArrayList<ApplicationsState.AppEntry> entries
+                    = mState.rebuild(filterObj, comparatorObj);
+            if (entries == null && !eraseold) {
+                // Don't have new list yet, but can continue using the old one.
+                return;
+            }
+            mBaseEntries = entries;
+            if (mBaseEntries != null) {
+                mEntries = applyPrefixFilter(mCurFilterPrefix, mBaseEntries);
+            } else {
+                mEntries = null;
+            }
+            notifyDataSetChanged();
+            updateStorageUsage();
+
+            if (entries == null) {
+                mWaitingForData = true;
+                mListContainer.setVisibility(View.INVISIBLE);
+                mLoadingContainer.setVisibility(View.VISIBLE);
+            } else {
+                mListContainer.setVisibility(View.VISIBLE);
+                mLoadingContainer.setVisibility(View.GONE);
+            }
+        }
+
+        ArrayList<ApplicationsState.AppEntry> applyPrefixFilter(CharSequence prefix,
+                ArrayList<ApplicationsState.AppEntry> origEntries) {
+            if (prefix == null || prefix.length() == 0) {
+                return origEntries;
+            } else {
+                String prefixStr = ApplicationsState.normalize(prefix.toString());
+                final String spacePrefixStr = " " + prefixStr;
+                ArrayList<ApplicationsState.AppEntry> newEntries
+                        = new ArrayList<ApplicationsState.AppEntry>();
+                for (int i=0; i<origEntries.size(); i++) {
+                    ApplicationsState.AppEntry entry = origEntries.get(i);
+                    String nlabel = entry.getNormalizedLabel();
+                    if (nlabel.startsWith(prefixStr) || nlabel.indexOf(spacePrefixStr) != -1) {
+                        newEntries.add(entry);
+                    }
+                }
+                return newEntries;
+            }
+        }
+
+        @Override
+        public void onRunningStateChanged(boolean running) {
+            setProgressBarIndeterminateVisibility(running);
+        }
+
+        @Override
+        public void onRebuildComplete(ArrayList<AppEntry> apps) {
+            mListContainer.setVisibility(View.VISIBLE);
+            mLoadingContainer.setVisibility(View.GONE);
+            mWaitingForData = false;
+            mBaseEntries = apps;
+            mEntries = applyPrefixFilter(mCurFilterPrefix, mBaseEntries);
+            notifyDataSetChanged();
+            updateStorageUsage();
+        }
+
+        @Override
+        public void onPackageListChanged() {
+            rebuild(false);
+        }
+
+        @Override
+        public void onPackageIconChanged() {
+            // We ensure icons are loaded when their item is displayed, so
+            // don't care about icons loaded in the background.
+        }
+
+        @Override
+        public void onPackageSizeChanged(String packageName) {
+            for (int i=0; i<mActive.size(); i++) {
+                AppViewHolder holder = (AppViewHolder)mActive.get(i).getTag();
+                if (holder.entry.info.packageName.equals(packageName)) {
+                    synchronized (holder.entry) {
+                        holder.updateSizeText(ManageApplications.this);
+                    }
+                    if (holder.entry.info.packageName.equals(mCurrentPkgName)
+                            && mLastSortMode == SORT_ORDER_SIZE) {
+                        // We got the size information for the last app the
+                        // user viewed, and are sorting by size...  they may
+                        // have cleared data, so we immediately want to resort
+                        // the list with the new size to reflect it to the user.
+                        rebuild(false);
+                    }
+                    updateStorageUsage();
+                    return;
+                }
+            }
+        }
+
+        @Override
+        public void onAllSizesComputed() {
+            if (mLastSortMode == SORT_ORDER_SIZE) {
+                rebuild(false);
+            }
+        }
+        
+        public int getCount() {
+            return mEntries != null ? mEntries.size() : 0;
+        }
+        
+        public Object getItem(int position) {
+            return mEntries.get(position);
+        }
+        
+        public ApplicationsState.AppEntry getAppEntry(int position) {
+            return mEntries.get(position);
+        }
+
+        public long getItemId(int position) {
+            return mEntries.get(position).id;
+        }
+        
+        public View getView(int position, View convertView, ViewGroup parent) {
+            // A ViewHolder keeps references to children views to avoid unnecessary calls
+            // to findViewById() on each row.
+            AppViewHolder holder;
+
+            // When convertView is not null, we can reuse it directly, there is no need
+            // to reinflate it. We only inflate a new View when the convertView supplied
+            // by ListView is null.
+            if (convertView == null) {
+                convertView = mInflater.inflate(R.layout.manage_applications_item, null);
+
+                // Creates a ViewHolder and store references to the two children views
+                // we want to bind data to.
+                holder = new AppViewHolder();
+                holder.appName = (TextView) convertView.findViewById(R.id.app_name);
+                holder.appIcon = (ImageView) convertView.findViewById(R.id.app_icon);
+                holder.appSize = (TextView) convertView.findViewById(R.id.app_size);
+                holder.disabled = (TextView) convertView.findViewById(R.id.app_disabled);
+                holder.checkBox = (CheckBox) convertView.findViewById(R.id.app_on_sdcard);
+                convertView.setTag(holder);
+            } else {
+                // Get the ViewHolder back to get fast access to the TextView
+                // and the ImageView.
+                holder = (AppViewHolder) convertView.getTag();
+            }
+
+            // Bind the data efficiently with the holder
+            ApplicationsState.AppEntry entry = mEntries.get(position);
+            synchronized (entry) {
+                holder.entry = entry;
+                if (entry.label != null) {
+                    holder.appName.setText(entry.label);
+                    holder.appName.setTextColor(getResources().getColorStateList(
+                            entry.info.enabled ? android.R.color.primary_text_dark
+                                    : android.R.color.secondary_text_dark));
+                }
+                mState.ensureIcon(entry);
+                if (entry.icon != null) {
+                    holder.appIcon.setImageDrawable(entry.icon);
+                }
+                holder.updateSizeText(ManageApplications.this);
+                if (InstalledAppDetails.SUPPORT_DISABLE_APPS) {
+                    holder.disabled.setVisibility(entry.info.enabled ? View.GONE : View.VISIBLE);
+                } else {
+                    holder.disabled.setVisibility(View.GONE);
+                }
+                if (mLastFilterMode == FILTER_APPS_SDCARD) {
+                    holder.checkBox.setVisibility(View.VISIBLE);
+                    holder.checkBox.setChecked((entry.info.flags
+                            & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0);
+                } else {
+                    holder.checkBox.setVisibility(View.GONE);
+                }
+            }
+            mActive.remove(convertView);
+            mActive.add(convertView);
+            return convertView;
+        }
+
+        @Override
+        public Filter getFilter() {
+            return mFilter;
+        }
+
+        @Override
+        public void onMovedToScrapHeap(View view) {
+            mActive.remove(view);
+        }
+    }
+    
+    static final String TAB_DOWNLOADED = "Downloaded";
+    static final String TAB_RUNNING = "Running";
+    static final String TAB_ALL = "All";
+    static final String TAB_SDCARD = "OnSdCard";
+    private View mRootView;
+    
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mApplicationsState = ApplicationsState.getInstance(getApplication());
+        mApplicationsAdapter = new ApplicationsAdapter(mApplicationsState);
+        Intent intent = getIntent();
+        String action = intent.getAction();
+        String defaultTabTag = TAB_DOWNLOADED;
+        if (intent.getComponent().getClassName().equals(
+                "com.android.settings.RunningServices")) {
+            defaultTabTag = TAB_RUNNING;
+        } else if (intent.getComponent().getClassName().equals(
+                "com.android.settings.applications.StorageUse")
+                || action.equals(Intent.ACTION_MANAGE_PACKAGE_STORAGE)) {
+            mSortOrder = SORT_ORDER_SIZE;
+            mFilterApps = FILTER_APPS_ALL;
+            defaultTabTag = TAB_ALL;
+        } else if (action.equals(Settings.ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS)) {
+            // Select the all-apps tab, with the default sorting
+            defaultTabTag = TAB_ALL;
+        }
+        
+        if (savedInstanceState != null) {
+            mSortOrder = savedInstanceState.getInt("sortOrder", mSortOrder);
+            mFilterApps = savedInstanceState.getInt("filterApps", mFilterApps);
+            String tmp = savedInstanceState.getString("defaultTabTag");
+            if (tmp != null) defaultTabTag = tmp;
+        }
+        
+        mNonConfigInstance = getLastNonConfigurationInstance();
+        
+        mDataFileStats = new StatFs("/data");
+        mSDCardFileStats = new StatFs(Environment.getExternalStorageDirectory().toString());
+
+        // initialize some window features
+        requestWindowFeature(Window.FEATURE_RIGHT_ICON);
+        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
+        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.manage_applications, null);
+        mLoadingContainer = mRootView.findViewById(R.id.loading_container);
+        mListContainer = mRootView.findViewById(R.id.list_container);
+        // Create adapter and list view here
+        ListView lv = (ListView) mListContainer.findViewById(android.R.id.list);
+        View emptyView = mListContainer.findViewById(com.android.internal.R.id.empty);
+        if (emptyView != null) {
+            lv.setEmptyView(emptyView);
+        }
+        lv.setOnItemClickListener(this);
+        lv.setSaveEnabled(true);
+        lv.setItemsCanFocus(true);
+        lv.setOnItemClickListener(this);
+        lv.setTextFilterEnabled(true);
+        mListView = lv;
+        lv.setRecyclerListener(mApplicationsAdapter);
+        mListView.setAdapter(mApplicationsAdapter);
+        mColorBar = (LinearColorBar)mListContainer.findViewById(R.id.storage_color_bar);
+        mStorageChartLabel = (TextView)mListContainer.findViewById(R.id.storageChartLabel);
+        mUsedStorageText = (TextView)mListContainer.findViewById(R.id.usedStorageText);
+        mFreeStorageText = (TextView)mListContainer.findViewById(R.id.freeStorageText);
+        mRunningProcessesView = (RunningProcessesView)mRootView.findViewById(
+                R.id.running_processes);
+
+        final TabHost tabHost = getTabHost();
+        tabHost.addTab(tabHost.newTabSpec(TAB_DOWNLOADED)
+                .setIndicator(getString(R.string.filter_apps_third_party),
+                        getResources().getDrawable(R.drawable.ic_tab_download))
+                .setContent(this));
+        tabHost.addTab(tabHost.newTabSpec(TAB_ALL)
+                .setIndicator(getString(R.string.filter_apps_all),
+                        getResources().getDrawable(R.drawable.ic_tab_all))
+                .setContent(this));
+        tabHost.addTab(tabHost.newTabSpec(TAB_SDCARD)
+                .setIndicator(getString(R.string.filter_apps_onsdcard),
+                        getResources().getDrawable(R.drawable.ic_tab_sdcard))
+                .setContent(this));
+        tabHost.addTab(tabHost.newTabSpec(TAB_RUNNING)
+                .setIndicator(getString(R.string.filter_apps_running),
+                        getResources().getDrawable(R.drawable.ic_tab_running))
+                .setContent(this));
+        tabHost.setCurrentTabByTag(defaultTabTag);
+        tabHost.setOnTabChangedListener(this);
+    }
+    
+    @Override
+    public void onStart() {
+        super.onStart();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mActivityResumed = true;
+        showCurrentTab();
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putInt("sortOrder", mSortOrder);
+        outState.putInt("filterApps", mFilterApps);
+        outState.putString("defautTabTag", getTabHost().getCurrentTabTag());
+    }
+
+    @Override
+    public Object onRetainNonConfigurationInstance() {
+        return mRunningProcessesView.doRetainNonConfigurationInstance();
+    }
+    
+    @Override
+    protected void onPause() {
+        super.onPause();
+        mActivityResumed = false;
+        mApplicationsAdapter.pause();
+        if (mResumedRunning) {
+            mRunningProcessesView.doPause();
+            mResumedRunning = false;
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode,
+            Intent data) {
+        if (requestCode == INSTALLED_APP_DETAILS && mCurrentPkgName != null) {
+            mApplicationsState.requestSize(mCurrentPkgName);
+        }
+    }
+    
+    // utility method used to start sub activity
+    private void startApplicationDetailsActivity() {
+        // Create intent to start new activity
+        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
+                Uri.fromParts("package", mCurrentPkgName, null));
+        // start new activity to display extended information
+        startActivityForResult(intent, INSTALLED_APP_DETAILS);
+    }
+    
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        menu.add(0, SORT_ORDER_ALPHA, 1, R.string.sort_order_alpha)
+                .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, SHOW_RUNNING_SERVICES, 3, R.string.show_running_services);
+        menu.add(0, SHOW_BACKGROUND_PROCESSES, 3, R.string.show_background_processes);
+        return true;
+    }
+    
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        /*
+         * The running processes screen doesn't use the mApplicationsAdapter
+         * so bringing up this menu in that case doesn't make any sense.
+         */
+        if (mCurView == VIEW_RUNNING) {
+            boolean showingBackground = mRunningProcessesView.mAdapter.getShowBackground();
+            menu.findItem(SORT_ORDER_ALPHA).setVisible(false);
+            menu.findItem(SORT_ORDER_SIZE).setVisible(false);
+            menu.findItem(SHOW_RUNNING_SERVICES).setVisible(showingBackground);
+            menu.findItem(SHOW_BACKGROUND_PROCESSES).setVisible(!showingBackground);
+        } else {
+            menu.findItem(SORT_ORDER_ALPHA).setVisible(mSortOrder != SORT_ORDER_ALPHA);
+            menu.findItem(SORT_ORDER_SIZE).setVisible(mSortOrder != SORT_ORDER_SIZE);
+            menu.findItem(SHOW_RUNNING_SERVICES).setVisible(false);
+            menu.findItem(SHOW_BACKGROUND_PROCESSES).setVisible(false);
+        }
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        int menuId = item.getItemId();
+        if ((menuId == SORT_ORDER_ALPHA) || (menuId == SORT_ORDER_SIZE)) {
+            mSortOrder = menuId;
+            if (mCurView != VIEW_RUNNING) {
+                mApplicationsAdapter.rebuild(mFilterApps, mSortOrder);
+            }
+        } else if (menuId == SHOW_RUNNING_SERVICES) {
+            mRunningProcessesView.mAdapter.setShowBackground(false);
+        } else if (menuId == SHOW_BACKGROUND_PROCESSES) {
+            mRunningProcessesView.mAdapter.setShowBackground(true);
+        }
+        return true;
+    }
+    
+    @Override
+    public boolean onKeyUp(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_SEARCH && event.isTracking()) {
+            if (mCurView != VIEW_RUNNING) {
+                ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE))
+                        .showSoftInputUnchecked(0, null);
+            }
+            return true;
+        }
+        return super.onKeyUp(keyCode, event);
+    }
+
+    public void onItemClick(AdapterView<?> parent, View view, int position,
+            long id) {
+        ApplicationsState.AppEntry entry = mApplicationsAdapter.getAppEntry(position);
+        mCurrentPkgName = entry.info.packageName;
+        startApplicationDetailsActivity();
+    }
+    
+    // Finish the activity if the user presses the back button to cancel the activity
+    public void onCancel(DialogInterface dialog) {
+        finish();
+    }
+
+    public View createTabContent(String tag) {
+        return mRootView;
+    }
+
+    static final int VIEW_NOTHING = 0;
+    static final int VIEW_LIST = 1;
+    static final int VIEW_RUNNING = 2;
+
+    void updateStorageUsage() {
+        if (mCurView == VIEW_RUNNING) {
+            return;
+        }
+
+        long freeStorage = 0;
+        long appStorage = 0;
+        long totalStorage = 0;
+        CharSequence newLabel = null;
+
+        if (mFilterApps == FILTER_APPS_SDCARD) {
+            if (mLastShowedInternalStorage) {
+                mLastShowedInternalStorage = false;
+            }
+            newLabel = this.getText(R.string.sd_card_storage);
+            mSDCardFileStats.restat(Environment.getExternalStorageDirectory().toString());
+            try {
+                totalStorage = (long)mSDCardFileStats.getBlockCount() *
+                        mSDCardFileStats.getBlockSize();
+                freeStorage = (long) mSDCardFileStats.getAvailableBlocks() *
+                mSDCardFileStats.getBlockSize();
+            } catch (IllegalArgumentException e) {
+                // use the old value of mFreeMem
+            }
+        } else {
+            if (!mLastShowedInternalStorage) {
+                mLastShowedInternalStorage = true;
+            }
+            newLabel = this.getText(R.string.internal_storage);
+            mDataFileStats.restat("/data");
+            try {
+                totalStorage = (long)mDataFileStats.getBlockCount() *
+                        mDataFileStats.getBlockSize();
+                freeStorage = (long) mDataFileStats.getAvailableBlocks() *
+                    mDataFileStats.getBlockSize();
+            } catch (IllegalArgumentException e) {
+            }
+            final int N = mApplicationsAdapter.getCount();
+            for (int i=0; i<N; i++) {
+                ApplicationsState.AppEntry ae = mApplicationsAdapter.getAppEntry(i);
+                appStorage += ae.codeSize + ae.dataSize;
+            }
+            freeStorage += mApplicationsState.sumCacheSizes();
+        }
+        if (newLabel != null) {
+            mStorageChartLabel.setText(newLabel);
+        }
+        if (totalStorage > 0) {
+            mColorBar.setRatios((totalStorage-freeStorage-appStorage)/(float)totalStorage,
+                    appStorage/(float)totalStorage, freeStorage/(float)totalStorage);
+            long usedStorage = totalStorage - freeStorage;
+            if (mLastUsedStorage != usedStorage) {
+                mLastUsedStorage = usedStorage;
+                String sizeStr = Formatter.formatShortFileSize(this, usedStorage);
+                mUsedStorageText.setText(getResources().getString(
+                        R.string.service_foreground_processes, sizeStr));
+            }
+            if (mLastFreeStorage != freeStorage) {
+                mLastFreeStorage = freeStorage;
+                String sizeStr = Formatter.formatShortFileSize(this, freeStorage);
+                mFreeStorageText.setText(getResources().getString(
+                        R.string.service_background_processes, sizeStr));
+            }
+        } else {
+            mColorBar.setRatios(0, 0, 0);
+            if (mLastUsedStorage != -1) {
+                mLastUsedStorage = -1;
+                mUsedStorageText.setText("");
+            }
+            if (mLastFreeStorage != -1) {
+                mLastFreeStorage = -1;
+                mFreeStorageText.setText("");
+            }
+        }
+    }
+
+    private void selectView(int which) {
+        if (which == VIEW_LIST) {
+            if (mResumedRunning) {
+                mRunningProcessesView.doPause();
+                mResumedRunning = false;
+            }
+            if (mCurView != which) {
+                mRunningProcessesView.setVisibility(View.GONE);
+                mListContainer.setVisibility(View.VISIBLE);
+                mLoadingContainer.setVisibility(View.GONE);
+            }
+            if (mActivityResumed) {
+                mApplicationsAdapter.resume(mFilterApps, mSortOrder);
+            }
+        } else if (which == VIEW_RUNNING) {
+            if (!mCreatedRunning) {
+                mRunningProcessesView.doCreate(null, mNonConfigInstance);
+                mCreatedRunning = true;
+            }
+            boolean haveData = true;
+            if (mActivityResumed && !mResumedRunning) {
+                haveData = mRunningProcessesView.doResume(mRunningProcessesAvail);
+                mResumedRunning = true;
+            }
+            mApplicationsAdapter.pause();
+            if (mCurView != which) {
+                if (haveData) {
+                    mRunningProcessesView.setVisibility(View.VISIBLE);
+                } else {
+                    mLoadingContainer.setVisibility(View.VISIBLE);
+                }
+                mListContainer.setVisibility(View.GONE);
+            }
+        }
+        mCurView = which;
+    }
+
+    void handleRunningProcessesAvail() {
+        if (mCurView == VIEW_RUNNING) {
+            mLoadingContainer.startAnimation(AnimationUtils.loadAnimation(
+                    this, android.R.anim.fade_out));
+            mRunningProcessesView.startAnimation(AnimationUtils.loadAnimation(
+                    this, android.R.anim.fade_in));
+            mRunningProcessesView.setVisibility(View.VISIBLE);
+            mLoadingContainer.setVisibility(View.GONE);
+        }
+    }
+
+    public void showCurrentTab() {
+        String tabId = getTabHost().getCurrentTabTag();
+        int newOption;
+        if (TAB_DOWNLOADED.equalsIgnoreCase(tabId)) {
+            newOption = FILTER_APPS_THIRD_PARTY;
+        } else if (TAB_ALL.equalsIgnoreCase(tabId)) {
+            newOption = FILTER_APPS_ALL;
+        } else if (TAB_SDCARD.equalsIgnoreCase(tabId)) {
+            newOption = FILTER_APPS_SDCARD;
+        } else if (TAB_RUNNING.equalsIgnoreCase(tabId)) {
+            ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE))
+                    .hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
+            selectView(VIEW_RUNNING);
+            return;
+        } else {
+            // Invalid option. Do nothing
+            return;
+        }
+        
+        mFilterApps = newOption;
+        selectView(VIEW_LIST);
+        updateStorageUsage();
+    }
+
+    public void onTabChanged(String tabId) {
+        showCurrentTab();
+    }
+}
diff --git a/src/com/android/settings/applications/RunningProcessesView.java b/src/com/android/settings/applications/RunningProcessesView.java
new file mode 100644
index 0000000..86457bf
--- /dev/null
+++ b/src/com/android/settings/applications/RunningProcessesView.java
@@ -0,0 +1,522 @@
+/*
+ * 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.applications;
+
+import com.android.settings.R;
+
+import android.app.ActivityManager;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.os.SystemProperties;
+import android.text.format.DateUtils;
+import android.text.format.Formatter;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+import android.widget.AbsListView.RecyclerListener;
+
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class RunningProcessesView extends FrameLayout
+        implements AdapterView.OnItemClickListener, RecyclerListener,
+        RunningState.OnRefreshUiListener {
+    
+    // Memory pages are 4K.
+    static final long PAGE_SIZE = 4*1024;
+    
+    long SECONDARY_SERVER_MEM;
+    
+    final HashMap<View, ActiveItem> mActiveItems = new HashMap<View, ActiveItem>();
+    
+    ActivityManager mAm;
+    
+    RunningState mState;
+    
+    Runnable mDataAvail;
+
+    StringBuilder mBuilder = new StringBuilder(128);
+    
+    RunningState.BaseItem mCurSelected;
+    
+    ListView mListView;
+    ServiceListAdapter mAdapter;
+    LinearColorBar mColorBar;
+    TextView mBackgroundProcessText;
+    TextView mForegroundProcessText;
+    
+    int mLastNumBackgroundProcesses = -1;
+    int mLastNumForegroundProcesses = -1;
+    int mLastNumServiceProcesses = -1;
+    long mLastBackgroundProcessMemory = -1;
+    long mLastForegroundProcessMemory = -1;
+    long mLastServiceProcessMemory = -1;
+    long mLastAvailMemory = -1;
+    
+    Dialog mCurDialog;
+    
+    byte[] mBuffer = new byte[1024];
+    
+    public static class ActiveItem {
+        View mRootView;
+        RunningState.BaseItem mItem;
+        ActivityManager.RunningServiceInfo mService;
+        ViewHolder mHolder;
+        long mFirstRunTime;
+        boolean mSetBackground;
+        
+        void updateTime(Context context, StringBuilder builder) {
+            TextView uptimeView = null;
+            
+            if (mItem instanceof RunningState.ServiceItem) {
+                // If we are displaying a service, then the service
+                // uptime goes at the top.
+                uptimeView = mHolder.size;
+                
+            } else {
+                String size = mItem.mSizeStr != null ? mItem.mSizeStr : "";
+                if (!size.equals(mItem.mCurSizeStr)) {
+                    mItem.mCurSizeStr = size;
+                    mHolder.size.setText(size);
+                }
+                
+                if (mItem.mBackground) {
+                    // This is a background process; no uptime.
+                    if (!mSetBackground) {
+                        mSetBackground = true;
+                        mHolder.uptime.setText("");
+                    }
+                } else if (mItem instanceof RunningState.MergedItem) {
+                    // This item represents both services and processes,
+                    // so show the service uptime below.
+                    uptimeView = mHolder.uptime;
+                }
+            }
+            
+            if (uptimeView != null) {
+                mSetBackground = false;
+                if (mFirstRunTime >= 0) {
+                    //Log.i("foo", "Time for " + mItem.mDisplayLabel
+                    //        + ": " + (SystemClock.uptimeMillis()-mFirstRunTime));
+                    uptimeView.setText(DateUtils.formatElapsedTime(builder,
+                            (SystemClock.elapsedRealtime()-mFirstRunTime)/1000));
+                } else {
+                    boolean isService = false;
+                    if (mItem instanceof RunningState.MergedItem) {
+                        isService = ((RunningState.MergedItem)mItem).mServices.size() > 0;
+                    }
+                    if (isService) {
+                        uptimeView.setText(context.getResources().getText(
+                                R.string.service_restarting));
+                    } else {
+                        uptimeView.setText("");
+                    }
+                }
+            }
+        }
+    }
+    
+    public static class ViewHolder {
+        public View rootView;
+        public ImageView icon;
+        public TextView name;
+        public TextView description;
+        public TextView size;
+        public TextView uptime;
+        
+        public ViewHolder(View v) {
+            rootView = v;
+            icon = (ImageView)v.findViewById(R.id.icon);
+            name = (TextView)v.findViewById(R.id.name);
+            description = (TextView)v.findViewById(R.id.description);
+            size = (TextView)v.findViewById(R.id.size);
+            uptime = (TextView)v.findViewById(R.id.uptime);
+            v.setTag(this);
+        }
+        
+        public ActiveItem bind(RunningState state, RunningState.BaseItem item,
+                StringBuilder builder) {
+            synchronized (state.mLock) {
+                PackageManager pm = rootView.getContext().getPackageManager();
+                if (item.mPackageInfo == null && item instanceof RunningState.MergedItem) {
+                    // Items for background processes don't normally load
+                    // their labels for performance reasons.  Do it now.
+                    ((RunningState.MergedItem)item).mProcess.ensureLabel(pm);
+                    item.mPackageInfo = ((RunningState.MergedItem)item).mProcess.mPackageInfo;
+                    item.mDisplayLabel = ((RunningState.MergedItem)item).mProcess.mDisplayLabel;
+                }
+                name.setText(item.mDisplayLabel);
+                ActiveItem ai = new ActiveItem();
+                ai.mRootView = rootView;
+                ai.mItem = item;
+                ai.mHolder = this;
+                ai.mFirstRunTime = item.mActiveSince;
+                if (item.mBackground) {
+                    description.setText(rootView.getContext().getText(R.string.cached));
+                } else {
+                    description.setText(item.mDescription);
+                }
+                item.mCurSizeStr = null;
+                if (item.mPackageInfo != null) {
+                    icon.setImageDrawable(item.mPackageInfo.loadIcon(pm));
+                }
+                icon.setVisibility(View.VISIBLE);
+                ai.updateTime(rootView.getContext(), builder);
+                return ai;
+            }
+        }
+    }
+    
+    static class TimeTicker extends TextView {
+        public TimeTicker(Context context, AttributeSet attrs) {
+            super(context, attrs);
+        }
+    }
+    
+    class ServiceListAdapter extends BaseAdapter {
+        final RunningState mState;
+        final LayoutInflater mInflater;
+        boolean mShowBackground;
+        ArrayList<RunningState.MergedItem> mItems;
+        
+        ServiceListAdapter(RunningState state) {
+            mState = state;
+            mInflater = (LayoutInflater)getContext().getSystemService(
+                    Context.LAYOUT_INFLATER_SERVICE);
+            refreshItems();
+        }
+
+        void setShowBackground(boolean showBackground) {
+            if (mShowBackground != showBackground) {
+                mShowBackground = showBackground;
+                mState.setWatchingBackgroundItems(showBackground);
+                refreshItems();
+                notifyDataSetChanged();
+                mColorBar.setShowingGreen(mShowBackground);
+            }
+        }
+
+        boolean getShowBackground() {
+            return mShowBackground;
+        }
+
+        void refreshItems() {
+            ArrayList<RunningState.MergedItem> newItems =
+                mShowBackground ? mState.getCurrentBackgroundItems()
+                        : mState.getCurrentMergedItems();
+            if (mItems != newItems) {
+                mItems = newItems;
+            }
+            if (mItems == null) {
+                mItems = new ArrayList<RunningState.MergedItem>();
+            }
+        }
+        
+        public boolean hasStableIds() {
+            return true;
+        }
+        
+        public int getCount() {
+            return mItems.size();
+        }
+
+        @Override
+        public boolean isEmpty() {
+            return mState.hasData() && mItems.size() == 0;
+        }
+
+        public Object getItem(int position) {
+            return mItems.get(position);
+        }
+
+        public long getItemId(int position) {
+            return mItems.get(position).hashCode();
+        }
+
+        public boolean areAllItemsEnabled() {
+            return false;
+        }
+
+        public boolean isEnabled(int position) {
+            return !mItems.get(position).mIsProcess;
+        }
+
+        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.running_processes_item, parent, false);
+            new ViewHolder(v);
+            return v;
+        }
+        
+        public void bindView(View view, int position) {
+            synchronized (mState.mLock) {
+                if (position >= mItems.size()) {
+                    // List must have changed since we last reported its
+                    // size...  ignore here, we will be doing a data changed
+                    // to refresh the entire list.
+                    return;
+                }
+                ViewHolder vh = (ViewHolder) view.getTag();
+                RunningState.MergedItem item = mItems.get(position);
+                ActiveItem ai = vh.bind(mState, item, mBuilder);
+                mActiveItems.put(view, ai);
+            }
+        }
+    }
+    
+    private boolean matchText(byte[] buffer, int index, String text) {
+        int N = text.length();
+        if ((index+N) >= buffer.length) {
+            return false;
+        }
+        for (int i=0; i<N; i++) {
+            if (buffer[index+i] != text.charAt(i)) {
+                return false;
+            }
+        }
+        return true;
+    }
+    
+    private long extractMemValue(byte[] buffer, int index) {
+        while (index < buffer.length && buffer[index] != '\n') {
+            if (buffer[index] >= '0' && buffer[index] <= '9') {
+                int start = index;
+                index++;
+                while (index < buffer.length && buffer[index] >= '0'
+                    && buffer[index] <= '9') {
+                    index++;
+                }
+                String str = new String(buffer, 0, start, index-start);
+                return ((long)Integer.parseInt(str)) * 1024;
+            }
+            index++;
+        }
+        return 0;
+    }
+    
+    private long readAvailMem() {
+        try {
+            long memFree = 0;
+            long memCached = 0;
+            FileInputStream is = new FileInputStream("/proc/meminfo");
+            int len = is.read(mBuffer);
+            is.close();
+            final int BUFLEN = mBuffer.length;
+            for (int i=0; i<len && (memFree == 0 || memCached == 0); i++) {
+                if (matchText(mBuffer, i, "MemFree")) {
+                    i += 7;
+                    memFree = extractMemValue(mBuffer, i);
+                } else if (matchText(mBuffer, i, "Cached")) {
+                    i += 6;
+                    memCached = extractMemValue(mBuffer, i);
+                }
+                while (i < BUFLEN && mBuffer[i] != '\n') {
+                    i++;
+                }
+            }
+            return memFree + memCached;
+        } catch (java.io.FileNotFoundException e) {
+        } catch (java.io.IOException e) {
+        }
+        return 0;
+    }
+
+    
+    void refreshUi(boolean dataChanged) {
+        if (dataChanged) {
+            ServiceListAdapter adapter = (ServiceListAdapter)(mListView.getAdapter());
+            adapter.refreshItems();
+            adapter.notifyDataSetChanged();
+        }
+        
+        if (mDataAvail != null) {
+            mDataAvail.run();
+            mDataAvail = null;
+        }
+
+        // This is the amount of available memory until we start killing
+        // background services.
+        long availMem = readAvailMem() - SECONDARY_SERVER_MEM;
+        if (availMem < 0) {
+            availMem = 0;
+        }
+        
+        synchronized (mState.mLock) {
+            if (mLastNumBackgroundProcesses != mState.mNumBackgroundProcesses
+                    || mLastBackgroundProcessMemory != mState.mBackgroundProcessMemory
+                    || mLastAvailMemory != availMem) {
+                mLastNumBackgroundProcesses = mState.mNumBackgroundProcesses;
+                mLastBackgroundProcessMemory = mState.mBackgroundProcessMemory;
+                mLastAvailMemory = availMem;
+                String sizeStr = Formatter.formatShortFileSize(getContext(),
+                        mLastAvailMemory + mLastBackgroundProcessMemory);
+                mBackgroundProcessText.setText(getResources().getString(
+                        R.string.service_background_processes, sizeStr));
+            }
+            if (mLastNumForegroundProcesses != mState.mNumForegroundProcesses
+                    || mLastForegroundProcessMemory != mState.mForegroundProcessMemory
+                    || mLastNumServiceProcesses != mState.mNumServiceProcesses
+                    || mLastServiceProcessMemory != mState.mServiceProcessMemory) {
+                mLastNumForegroundProcesses = mState.mNumForegroundProcesses;
+                mLastForegroundProcessMemory = mState.mForegroundProcessMemory;
+                mLastNumServiceProcesses = mState.mNumServiceProcesses;
+                mLastServiceProcessMemory = mState.mServiceProcessMemory;
+                String sizeStr = Formatter.formatShortFileSize(getContext(),
+                        mLastForegroundProcessMemory + mLastServiceProcessMemory);
+                mForegroundProcessText.setText(getResources().getString(
+                        R.string.service_foreground_processes, sizeStr));
+            }
+            
+            float totalMem = availMem + mLastBackgroundProcessMemory
+                    + mLastForegroundProcessMemory + mLastServiceProcessMemory;
+            mColorBar.setRatios(mLastForegroundProcessMemory/totalMem,
+                    mLastServiceProcessMemory/totalMem,
+                    mLastBackgroundProcessMemory/totalMem);
+        }
+    }
+    
+    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
+        ListView l = (ListView)parent;
+        RunningState.MergedItem mi = (RunningState.MergedItem)l.getAdapter().getItem(position);
+        mCurSelected = mi;
+        Intent intent = new Intent();
+        intent.putExtra(RunningServiceDetails.KEY_UID, mi.mProcess.mUid);
+        intent.putExtra(RunningServiceDetails.KEY_PROCESS, mi.mProcess.mProcessName);
+        intent.putExtra(RunningServiceDetails.KEY_BACKGROUND, mAdapter.mShowBackground);
+        intent.setClass(getContext(), RunningServiceDetails.class);
+        getContext().startActivity(intent);
+    }
+
+    public void onMovedToScrapHeap(View view) {
+        mActiveItems.remove(view);
+    }
+
+    public RunningProcessesView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+    
+    public void doCreate(Bundle savedInstanceState, Object nonConfigurationInstace) {
+        mAm = (ActivityManager)getContext().getSystemService(Context.ACTIVITY_SERVICE);
+        mState = RunningState.getInstance(getContext());
+        LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(
+                Context.LAYOUT_INFLATER_SERVICE);
+        inflater.inflate(R.layout.running_processes_view, this);
+        mListView = (ListView)findViewById(android.R.id.list);
+        View emptyView = findViewById(com.android.internal.R.id.empty);
+        if (emptyView != null) {
+            mListView.setEmptyView(emptyView);
+        }
+        mListView.setOnItemClickListener(this);
+        mListView.setRecyclerListener(this);
+        mAdapter = new ServiceListAdapter(mState);
+        mListView.setAdapter(mAdapter);
+        mColorBar = (LinearColorBar)findViewById(R.id.color_bar);
+        mBackgroundProcessText = (TextView)findViewById(R.id.backgroundText);
+        mBackgroundProcessText.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mAdapter.setShowBackground(true);
+            }
+        });
+        mForegroundProcessText = (TextView)findViewById(R.id.foregroundText);
+        mForegroundProcessText.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mAdapter.setShowBackground(false);
+            }
+        });
+        
+        // Magic!  Implementation detail!  Don't count on this!
+        SECONDARY_SERVER_MEM =
+            Integer.valueOf(SystemProperties.get("ro.SECONDARY_SERVER_MEM"))*PAGE_SIZE;
+    }
+    
+    public void doPause() {
+        mState.pause();
+        mDataAvail = null;
+    }
+
+    public boolean doResume(Runnable dataAvail) {
+        mState.resume(this);
+        if (mState.hasData()) {
+            // If the state already has its data, then let's populate our
+            // list right now to avoid flicker.
+            refreshUi(true);
+            return true;
+        }
+        mDataAvail = dataAvail;
+        return false;
+    }
+
+    public Object doRetainNonConfigurationInstance() {
+        return null;
+    }
+
+    void updateTimes() {
+        Iterator<ActiveItem> it = mActiveItems.values().iterator();
+        while (it.hasNext()) {
+            ActiveItem ai = it.next();
+            if (ai.mRootView.getWindowToken() == null) {
+                // Clean out any dead views, just in case.
+                it.remove();
+                continue;
+            }
+            ai.updateTime(getContext(), mBuilder);
+        }
+    }
+
+    @Override
+    public void onRefreshUi(int what) {
+        switch (what) {
+            case REFRESH_TIME:
+                updateTimes();
+                break;
+            case REFRESH_DATA:
+                refreshUi(false);
+                updateTimes();
+                break;
+            case REFRESH_STRUCTURE:
+                refreshUi(true);
+                updateTimes();
+                break;
+        }
+    }
+}
diff --git a/src/com/android/settings/applications/RunningServiceDetails.java b/src/com/android/settings/applications/RunningServiceDetails.java
new file mode 100644
index 0000000..aa89baf
--- /dev/null
+++ b/src/com/android/settings/applications/RunningServiceDetails.java
@@ -0,0 +1,536 @@
+package com.android.settings.applications;
+
+import com.android.settings.R;
+
+import android.app.Activity;
+import android.app.ActivityManager;
+import android.app.AlertDialog;
+import android.app.ApplicationErrorReport;
+import android.app.Dialog;
+import android.app.PendingIntent;
+import android.content.ActivityNotFoundException;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ProviderInfo;
+import android.content.pm.ServiceInfo;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.os.Debug;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+
+public class RunningServiceDetails extends Activity
+        implements RunningState.OnRefreshUiListener {
+    static final String TAG = "RunningServicesDetails";
+    
+    static final String KEY_UID = "uid";
+    static final String KEY_PROCESS = "process";
+    static final String KEY_BACKGROUND = "background";
+    
+    static final int DIALOG_CONFIRM_STOP = 1;
+    
+    ActivityManager mAm;
+    LayoutInflater mInflater;
+    
+    RunningState mState;
+    boolean mHaveData;
+    
+    int mUid;
+    String mProcessName;
+    boolean mShowBackground;
+    
+    RunningState.MergedItem mMergedItem;
+    
+    ViewGroup mAllDetails;
+    ViewGroup mSnippet;
+    RunningProcessesView.ActiveItem mSnippetActiveItem;
+    RunningProcessesView.ViewHolder mSnippetViewHolder;
+    
+    int mNumServices, mNumProcesses;
+    
+    TextView mServicesHeader;
+    TextView mProcessesHeader;
+    final ArrayList<ActiveDetail> mActiveDetails = new ArrayList<ActiveDetail>();
+    
+    class ActiveDetail implements View.OnClickListener {
+        View mRootView;
+        Button mStopButton;
+        Button mReportButton;
+        RunningState.ServiceItem mServiceItem;
+        RunningProcessesView.ActiveItem mActiveItem;
+        RunningProcessesView.ViewHolder mViewHolder;
+        PendingIntent mManageIntent;
+        ComponentName mInstaller;
+
+        void stopActiveService(boolean confirmed) {
+            RunningState.ServiceItem si = mServiceItem;
+            if (!confirmed) {
+                if ((si.mServiceInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) != 0) {
+                    Bundle args = new Bundle();
+                    args.putParcelable("comp", si.mRunningService.service);
+                    removeDialog(DIALOG_CONFIRM_STOP);
+                    showDialog(DIALOG_CONFIRM_STOP, args);
+                    return;
+                }
+            }
+            stopService(new Intent().setComponent(si.mRunningService.service));
+            if (mMergedItem == null) {
+                // If this is gone, we are gone.
+                mState.updateNow();
+                finish();
+            } else if (!mShowBackground && mMergedItem.mServices.size() <= 1) {
+                // If there was only one service, we are finishing it,
+                // so no reason for the UI to stick around.
+                mState.updateNow();
+                finish();
+            } else {
+                mState.updateNow();
+            }
+        }
+        
+        public void onClick(View v) {
+            if (v == mReportButton) {
+                ApplicationErrorReport report = new ApplicationErrorReport();
+                report.type = ApplicationErrorReport.TYPE_RUNNING_SERVICE;
+                report.packageName = mServiceItem.mServiceInfo.packageName;
+                report.installerPackageName = mInstaller.getPackageName();
+                report.processName = mServiceItem.mRunningService.process;
+                report.time = System.currentTimeMillis();
+                report.systemApp = (mServiceItem.mServiceInfo.applicationInfo.flags
+                        & ApplicationInfo.FLAG_SYSTEM) != 0;
+                ApplicationErrorReport.RunningServiceInfo info
+                        = new ApplicationErrorReport.RunningServiceInfo();
+                if (mActiveItem.mFirstRunTime >= 0) {
+                    info.durationMillis = SystemClock.elapsedRealtime()-mActiveItem.mFirstRunTime;
+                } else {
+                    info.durationMillis = -1;
+                }
+                ComponentName comp = new ComponentName(mServiceItem.mServiceInfo.packageName,
+                        mServiceItem.mServiceInfo.name);
+                File filename = getFileStreamPath("service_dump.txt");
+                FileOutputStream output = null;
+                try {
+                    output = new FileOutputStream(filename);
+                    Debug.dumpService("activity", output.getFD(),
+                            new String[] { "-a", "service", comp.flattenToString() });
+                } catch (IOException e) {
+                    Log.w(TAG, "Can't dump service: " + comp, e);
+                } finally {
+                    if (output != null) try { output.close(); } catch (IOException e) {}
+                }
+                FileInputStream input = null;
+                try {
+                    input = new FileInputStream(filename);
+                    byte[] buffer = new byte[(int) filename.length()];
+                    input.read(buffer);
+                    info.serviceDetails = new String(buffer);
+                } catch (IOException e) {
+                    Log.w(TAG, "Can't read service dump: " + comp, e);
+                } finally {
+                    if (input != null) try { input.close(); } catch (IOException e) {}
+                }
+                filename.delete();
+                Log.i(TAG, "Details: " + info.serviceDetails);
+                report.runningServiceInfo = info;
+                Intent result = new Intent(Intent.ACTION_APP_ERROR);
+                result.setComponent(mInstaller);
+                result.putExtra(Intent.EXTRA_BUG_REPORT, report);
+                result.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                startActivity(result);
+                return;
+            }
+
+            if (mManageIntent != null) {
+                try {
+                    startIntentSender(mManageIntent.getIntentSender(), null,
+                            Intent.FLAG_ACTIVITY_NEW_TASK
+                                    | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET,
+                            Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET, 0);
+                } catch (IntentSender.SendIntentException e) {
+                    Log.w(TAG, e);
+                } catch (IllegalArgumentException e) {
+                    Log.w(TAG, e);
+                } catch (ActivityNotFoundException e) {
+                    Log.w(TAG, e);
+                }
+            } else if (mServiceItem != null) {
+                stopActiveService(false);
+            } else if (mActiveItem.mItem.mBackground) {
+                // Background process.  Just kill it.
+                mAm.killBackgroundProcesses(mActiveItem.mItem.mPackageInfo.packageName);
+                finish();
+            } else {
+                // Heavy-weight process.  We'll do a force-stop on it.
+                mAm.forceStopPackage(mActiveItem.mItem.mPackageInfo.packageName);
+                finish();
+            }
+        }
+    }
+    
+    StringBuilder mBuilder = new StringBuilder(128);
+    
+    boolean findMergedItem() {
+        RunningState.MergedItem item = null;
+        ArrayList<RunningState.MergedItem> newItems = mShowBackground
+                ? mState.getCurrentBackgroundItems() : mState.getCurrentMergedItems();
+        if (newItems != null) {
+            for (int i=0; i<newItems.size(); i++) {
+                RunningState.MergedItem mi = newItems.get(i);
+                if (mi.mProcess.mUid == mUid
+                        && mi.mProcess.mProcessName.equals(mProcessName)) {
+                    item = mi;
+                    break;
+                }
+            }
+        }
+
+        if (mMergedItem != item) {
+            mMergedItem = item;
+            return true;
+        }
+        return false;
+    }
+    
+    void addServiceDetailsView(RunningState.ServiceItem si, RunningState.MergedItem mi) {
+        if (mNumServices == 0) {
+            mServicesHeader = (TextView)mInflater.inflate(R.layout.separator_label,
+                    mAllDetails, false);
+            mServicesHeader.setText(R.string.runningservicedetails_services_title);
+            mAllDetails.addView(mServicesHeader);
+        }
+        mNumServices++;
+        
+        RunningState.BaseItem bi = si != null ? si : mi;
+        
+        ActiveDetail detail = new ActiveDetail();
+        View root = mInflater.inflate(R.layout.running_service_details_service,
+                mAllDetails, false);
+        mAllDetails.addView(root);
+        detail.mRootView = root;
+        detail.mServiceItem = si;
+        detail.mViewHolder = new RunningProcessesView.ViewHolder(root);
+        detail.mActiveItem = detail.mViewHolder.bind(mState, bi, mBuilder);
+        
+        if (si != null && si.mRunningService.clientLabel != 0) {
+            detail.mManageIntent = mAm.getRunningServiceControlPanel(
+                    si.mRunningService.service);
+        }
+        
+        TextView description = (TextView)root.findViewById(R.id.comp_description);
+        if (si != null && si.mServiceInfo.descriptionRes != 0) {
+            description.setText(getPackageManager().getText(
+                    si.mServiceInfo.packageName, si.mServiceInfo.descriptionRes,
+                    si.mServiceInfo.applicationInfo));
+        } else {
+            if (mi.mBackground) {
+                description.setText(R.string.background_process_stop_description);
+            } else if (detail.mManageIntent != null) {
+                try {
+                    Resources clientr = getPackageManager().getResourcesForApplication(
+                            si.mRunningService.clientPackage);
+                    String label = clientr.getString(si.mRunningService.clientLabel);
+                    description.setText(getString(R.string.service_manage_description,
+                            label));
+                } catch (PackageManager.NameNotFoundException e) {
+                }
+            } else {
+                description.setText(getText(si != null
+                        ? R.string.service_stop_description
+                        : R.string.heavy_weight_stop_description));
+            }
+        }
+        
+        detail.mStopButton = (Button)root.findViewById(R.id.left_button);
+        detail.mStopButton.setOnClickListener(detail);
+        detail.mStopButton.setText(getText(detail.mManageIntent != null
+                ? R.string.service_manage : R.string.service_stop));
+
+        detail.mReportButton = (Button)root.findViewById(R.id.right_button);
+        detail.mReportButton.setOnClickListener(detail);
+        detail.mReportButton.setText(com.android.internal.R.string.report);
+        // check if error reporting is enabled in secure settings
+        int enabled = Settings.Secure.getInt(getContentResolver(),
+                Settings.Secure.SEND_ACTION_APP_ERROR, 0);
+        if (enabled != 0 && si != null) {
+            detail.mInstaller = ApplicationErrorReport.getErrorReportReceiver(
+                    this, si.mServiceInfo.packageName, si.mServiceInfo.applicationInfo.flags);
+            detail.mReportButton.setEnabled(detail.mInstaller != null);
+        } else {
+            detail.mReportButton.setEnabled(false);
+        }
+        
+        mActiveDetails.add(detail);
+    }
+    
+    void addProcessDetailsView(RunningState.ProcessItem pi, boolean isMain) {
+        if (mNumProcesses == 0) {
+            mProcessesHeader = (TextView)mInflater.inflate(R.layout.separator_label,
+                    mAllDetails, false);
+            mProcessesHeader.setText(R.string.runningservicedetails_processes_title);
+            mAllDetails.addView(mProcessesHeader);
+        }
+        mNumProcesses++;
+        
+        ActiveDetail detail = new ActiveDetail();
+        View root = mInflater.inflate(R.layout.running_service_details_process,
+                mAllDetails, false);
+        mAllDetails.addView(root);
+        detail.mRootView = root;
+        detail.mViewHolder = new RunningProcessesView.ViewHolder(root);
+        detail.mActiveItem = detail.mViewHolder.bind(mState, pi, mBuilder);
+        
+        TextView description = (TextView)root.findViewById(R.id.comp_description);
+        if (isMain) {
+            description.setText(R.string.main_running_process_description);
+        } else {
+            int textid = 0;
+            CharSequence label = null;
+            ActivityManager.RunningAppProcessInfo rpi = pi.mRunningProcessInfo;
+            final ComponentName comp = rpi.importanceReasonComponent;
+            //Log.i(TAG, "Secondary proc: code=" + rpi.importanceReasonCode
+            //        + " pid=" + rpi.importanceReasonPid + " comp=" + comp);
+            switch (rpi.importanceReasonCode) {
+                case ActivityManager.RunningAppProcessInfo.REASON_PROVIDER_IN_USE:
+                    textid = R.string.process_provider_in_use_description;
+                    if (rpi.importanceReasonComponent != null) {
+                        try {
+                            ProviderInfo prov = getPackageManager().getProviderInfo(
+                                    rpi.importanceReasonComponent, 0);
+                            label = RunningState.makeLabel(getPackageManager(),
+                                    prov.name, prov);
+                        } catch (NameNotFoundException e) {
+                        }
+                    }
+                    break;
+                case ActivityManager.RunningAppProcessInfo.REASON_SERVICE_IN_USE:
+                    textid = R.string.process_service_in_use_description;
+                    if (rpi.importanceReasonComponent != null) {
+                        try {
+                            ServiceInfo serv = getPackageManager().getServiceInfo(
+                                    rpi.importanceReasonComponent, 0);
+                            label = RunningState.makeLabel(getPackageManager(),
+                                    serv.name, serv);
+                        } catch (NameNotFoundException e) {
+                        }
+                    }
+                    break;
+            }
+            if (textid != 0 && label != null) {
+                description.setText(getString(textid, label));
+            }
+        }
+        
+        mActiveDetails.add(detail);
+    }
+    
+    void addDetailViews() {
+        for (int i=mActiveDetails.size()-1; i>=0; i--) {
+            mAllDetails.removeView(mActiveDetails.get(i).mRootView);
+        }
+        mActiveDetails.clear();
+        
+        if (mServicesHeader != null) {
+            mAllDetails.removeView(mServicesHeader);
+            mServicesHeader = null;
+        }
+        
+        if (mProcessesHeader != null) {
+            mAllDetails.removeView(mProcessesHeader);
+            mProcessesHeader = null;
+        }
+        
+        mNumServices = mNumProcesses = 0;
+        
+        if (mMergedItem != null) {
+            for (int i=0; i<mMergedItem.mServices.size(); i++) {
+                addServiceDetailsView(mMergedItem.mServices.get(i), mMergedItem);
+            }
+            
+            if (mMergedItem.mServices.size() <= 0) {
+                // This item does not have any services, so it must be
+                // another interesting process...  we will put a fake service
+                // entry for it, to allow the user to "stop" it.
+                addServiceDetailsView(null, mMergedItem);
+            }
+            
+            for (int i=-1; i<mMergedItem.mOtherProcesses.size(); i++) {
+                RunningState.ProcessItem pi = i < 0 ? mMergedItem.mProcess
+                        : mMergedItem.mOtherProcesses.get(i);
+                if (pi.mPid <= 0) {
+                    continue;
+                }
+                
+                addProcessDetailsView(pi, i < 0);
+            }
+        }
+    }
+    
+    void refreshUi(boolean dataChanged) {
+        if (findMergedItem()) {
+            dataChanged = true;
+        }
+        if (dataChanged) {
+            if (mMergedItem != null) {
+                mSnippetActiveItem = mSnippetViewHolder.bind(mState,
+                        mMergedItem, mBuilder);
+            } else if (mSnippetActiveItem != null) {
+                // Clear whatever is currently being shown.
+                mSnippetActiveItem.mHolder.size.setText("");
+                mSnippetActiveItem.mHolder.uptime.setText("");
+                mSnippetActiveItem.mHolder.description.setText(R.string.no_services);
+            } else {
+                // No merged item, never had one.  Nothing to do.
+                finish();
+                return;
+            }
+            addDetailViews();
+        }
+    }
+    
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        
+        mUid = getIntent().getIntExtra(KEY_UID, 0);
+        mProcessName = getIntent().getStringExtra(KEY_PROCESS);
+        mShowBackground = getIntent().getBooleanExtra(KEY_BACKGROUND, false);
+        
+        mAm = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
+        mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        
+        mState = RunningState.getInstance(this);
+        
+        setContentView(R.layout.running_service_details);
+        
+        mAllDetails = (ViewGroup)findViewById(R.id.all_details);
+        mSnippet = (ViewGroup)findViewById(R.id.snippet);
+        mSnippet.setBackgroundResource(com.android.internal.R.drawable.title_bar_medium);
+        mSnippet.setPadding(0, mSnippet.getPaddingTop(), 0, mSnippet.getPaddingBottom());
+        mSnippetViewHolder = new RunningProcessesView.ViewHolder(mSnippet);
+        
+        // We want to retrieve the data right now, so any active managed
+        // dialog that gets created can find it.
+        ensureData();
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        mHaveData = false;
+        mState.pause();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        ensureData();
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+    
+    ActiveDetail activeDetailForService(ComponentName comp) {
+        for (int i=0; i<mActiveDetails.size(); i++) {
+            ActiveDetail ad = mActiveDetails.get(i);
+            if (ad.mServiceItem != null && ad.mServiceItem.mRunningService != null
+                    && comp.equals(ad.mServiceItem.mRunningService.service)) {
+                return ad;
+            }
+        }
+        return null;
+    }
+    
+    @Override
+    protected Dialog onCreateDialog(int id, Bundle args) {
+        switch (id) {
+            case DIALOG_CONFIRM_STOP: {
+                final ComponentName comp = (ComponentName)args.getParcelable("comp");
+                if (activeDetailForService(comp) == null) {
+                    return null;
+                }
+                
+                return new AlertDialog.Builder(this)
+                        .setTitle(getString(R.string.runningservicedetails_stop_dlg_title))
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .setMessage(getString(R.string.runningservicedetails_stop_dlg_text))
+                        .setPositiveButton(R.string.dlg_ok,
+                                new DialogInterface.OnClickListener() {
+                            public void onClick(DialogInterface dialog, int which) {
+                                ActiveDetail ad = activeDetailForService(comp);
+                                if (ad != null) {
+                                    ad.stopActiveService(true);
+                                }
+                            }
+                        })
+                        .setNegativeButton(R.string.dlg_cancel, null)
+                        .create();
+            }
+            
+            default:
+                return super.onCreateDialog(id, args);
+        }
+    }
+
+    void ensureData() {
+        if (!mHaveData) {
+            mHaveData = true;
+            mState.resume(this);
+
+            // We want to go away if the service being shown no longer exists,
+            // so we need to ensure we have done the initial data retrieval before
+            // showing our ui.
+            mState.waitForData();
+
+            // And since we know we have the data, let's show the UI right away
+            // to avoid flicker.
+            refreshUi(true);
+        }
+    }
+    
+    void updateTimes() {
+        if (mSnippetActiveItem != null) {
+            mSnippetActiveItem.updateTime(RunningServiceDetails.this, mBuilder);
+        }
+        for (int i=0; i<mActiveDetails.size(); i++) {
+            mActiveDetails.get(i).mActiveItem.updateTime(
+                    RunningServiceDetails.this, mBuilder);
+        }
+    }
+
+    @Override
+    public void onRefreshUi(int what) {
+        switch (what) {
+            case REFRESH_TIME:
+                updateTimes();
+                break;
+            case REFRESH_DATA:
+                refreshUi(false);
+                updateTimes();
+                break;
+            case REFRESH_STRUCTURE:
+                refreshUi(true);
+                updateTimes();
+                break;
+        }
+    }
+}
diff --git a/src/com/android/settings/applications/RunningState.java b/src/com/android/settings/applications/RunningState.java
new file mode 100644
index 0000000..dbe4a64
--- /dev/null
+++ b/src/com/android/settings/applications/RunningState.java
@@ -0,0 +1,1036 @@
+/*
+ * 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.applications;
+
+import com.android.settings.R;
+
+import android.app.ActivityManager;
+import android.app.ActivityManagerNative;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageItemInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ServiceInfo;
+import android.content.res.Resources;
+import android.os.Debug;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.os.Message;
+import android.os.RemoteException;
+import android.os.SystemClock;
+import android.text.format.Formatter;
+import android.util.Log;
+import android.util.SparseArray;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Singleton for retrieving and monitoring the state about all running
+ * applications/processes/services.
+ */
+public class RunningState {
+    static Object sGlobalLock = new Object();
+    static RunningState sInstance;
+
+    static final int MSG_UPDATE_CONTENTS = 1;
+    static final int MSG_REFRESH_UI = 2;
+    static final int MSG_UPDATE_TIME = 3;
+
+    static final long TIME_UPDATE_DELAY = 1000;
+    static final long CONTENTS_UPDATE_DELAY = 2000;
+
+    static final int MAX_SERVICES = 100;
+
+    final Context mApplicationContext;
+    final ActivityManager mAm;
+    final PackageManager mPm;
+
+    OnRefreshUiListener mRefreshUiListener;
+
+    // Processes that are hosting a service we are interested in, organized
+    // by uid and name.  Note that this mapping does not change even across
+    // service restarts, and during a restart there will still be a process
+    // entry.
+    final SparseArray<HashMap<String, ProcessItem>> mServiceProcessesByName
+            = new SparseArray<HashMap<String, ProcessItem>>();
+    
+    // Processes that are hosting a service we are interested in, organized
+    // by their pid.  These disappear and re-appear as services are restarted.
+    final SparseArray<ProcessItem> mServiceProcessesByPid
+            = new SparseArray<ProcessItem>();
+    
+    // Used to sort the interesting processes.
+    final ServiceProcessComparator mServiceProcessComparator
+            = new ServiceProcessComparator();
+    
+    // Additional interesting processes to be shown to the user, even if
+    // there is no service running in them.
+    final ArrayList<ProcessItem> mInterestingProcesses = new ArrayList<ProcessItem>();
+    
+    // All currently running processes, for finding dependencies etc.
+    final SparseArray<ProcessItem> mRunningProcesses
+            = new SparseArray<ProcessItem>();
+    
+    // The processes associated with services, in sorted order.
+    final ArrayList<ProcessItem> mProcessItems = new ArrayList<ProcessItem>();
+    
+    // All processes, used for retrieving memory information.
+    final ArrayList<ProcessItem> mAllProcessItems = new ArrayList<ProcessItem>();
+    
+    int mSequence = 0;
+    
+    // ----- following protected by mLock -----
+    
+    // Lock for protecting the state that will be shared between the
+    // background update thread and the UI thread.
+    final Object mLock = new Object();
+    
+    boolean mResumed;
+    boolean mHaveData;
+    boolean mWatchingBackgroundItems;
+
+    ArrayList<BaseItem> mItems = new ArrayList<BaseItem>();
+    ArrayList<MergedItem> mMergedItems = new ArrayList<MergedItem>();
+    ArrayList<MergedItem> mBackgroundItems = new ArrayList<MergedItem>();
+    
+    int mNumBackgroundProcesses;
+    long mBackgroundProcessMemory;
+    int mNumForegroundProcesses;
+    long mForegroundProcessMemory;
+    int mNumServiceProcesses;
+    long mServiceProcessMemory;
+
+    // ----- BACKGROUND MONITORING THREAD -----
+
+    final HandlerThread mBackgroundThread;
+    final class BackgroundHandler extends Handler {
+        public BackgroundHandler(Looper looper) {
+            super(looper);
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_UPDATE_CONTENTS:
+                    synchronized (mLock) {
+                        if (!mResumed) {
+                            return;
+                        }
+                    }
+                    Message cmd = mHandler.obtainMessage(MSG_REFRESH_UI);
+                    cmd.arg1 = update(mApplicationContext, mAm) ? 1 : 0;
+                    mHandler.sendMessage(cmd);
+                    removeMessages(MSG_UPDATE_CONTENTS);
+                    msg = obtainMessage(MSG_UPDATE_CONTENTS);
+                    sendMessageDelayed(msg, CONTENTS_UPDATE_DELAY);
+                    break;
+            }
+        }
+    };
+
+    final BackgroundHandler mBackgroundHandler;
+
+    final Handler mHandler = new Handler() {
+        int mNextUpdate = OnRefreshUiListener.REFRESH_TIME;
+
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_REFRESH_UI:
+                    mNextUpdate = msg.arg1 != 0
+                            ? OnRefreshUiListener.REFRESH_STRUCTURE
+                            : OnRefreshUiListener.REFRESH_DATA;
+                    break;
+                case MSG_UPDATE_TIME:
+                    synchronized (mLock) {
+                        if (!mResumed) {
+                            return;
+                        }
+                    }
+                    removeMessages(MSG_UPDATE_TIME);
+                    Message m = obtainMessage(MSG_UPDATE_TIME);
+                    sendMessageDelayed(m, TIME_UPDATE_DELAY);
+
+                    if (mRefreshUiListener != null) {
+                        //Log.i("foo", "Refresh UI: " + mNextUpdate
+                        //        + " @ " + SystemClock.uptimeMillis());
+                        mRefreshUiListener.onRefreshUi(mNextUpdate);
+                        mNextUpdate = OnRefreshUiListener.REFRESH_TIME;
+                    }
+                    break;
+            }
+        }
+    };
+
+    // ----- DATA STRUCTURES -----
+
+    static interface OnRefreshUiListener {
+        public static final int REFRESH_TIME = 0;
+        public static final int REFRESH_DATA = 1;
+        public static final int REFRESH_STRUCTURE = 2;
+
+        public void onRefreshUi(int what);
+    }
+
+    static class BaseItem {
+        final boolean mIsProcess;
+        
+        PackageItemInfo mPackageInfo;
+        CharSequence mDisplayLabel;
+        String mLabel;
+        String mDescription;
+        
+        int mCurSeq;
+        
+        long mActiveSince;
+        long mSize;
+        String mSizeStr;
+        String mCurSizeStr;
+        boolean mNeedDivider;
+        boolean mBackground;
+        
+        public BaseItem(boolean isProcess) {
+            mIsProcess = isProcess;
+        }
+    }
+
+    static class ServiceItem extends BaseItem {
+        ActivityManager.RunningServiceInfo mRunningService;
+        ServiceInfo mServiceInfo;
+        boolean mShownAsStarted;
+        
+        MergedItem mMergedItem;
+        
+        public ServiceItem() {
+            super(false);
+        }
+    }
+
+    static class ProcessItem extends BaseItem {
+        final HashMap<ComponentName, ServiceItem> mServices
+                = new HashMap<ComponentName, ServiceItem>();
+        final SparseArray<ProcessItem> mDependentProcesses
+                = new SparseArray<ProcessItem>();
+        
+        final int mUid;
+        final String mProcessName;
+        int mPid;
+        
+        ProcessItem mClient;
+        int mLastNumDependentProcesses;
+        
+        int mRunningSeq;
+        ActivityManager.RunningAppProcessInfo mRunningProcessInfo;
+        
+        MergedItem mMergedItem;
+        
+        // Purely for sorting.
+        boolean mIsSystem;
+        boolean mIsStarted;
+        long mActiveSince;
+        
+        public ProcessItem(Context context, int uid, String processName) {
+            super(true);
+            mDescription = context.getResources().getString(
+                    R.string.service_process_name, processName);
+            mUid = uid;
+            mProcessName = processName;
+        }
+        
+        void ensureLabel(PackageManager pm) {
+            if (mLabel != null) {
+                return;
+            }
+            
+            try {
+                ApplicationInfo ai = pm.getApplicationInfo(mProcessName, 0);
+                if (ai.uid == mUid) {
+                    mDisplayLabel = ai.loadLabel(pm);
+                    mLabel = mDisplayLabel.toString();
+                    mPackageInfo = ai;
+                    return;
+                }
+            } catch (PackageManager.NameNotFoundException e) {
+            }
+            
+            // If we couldn't get information about the overall
+            // process, try to find something about the uid.
+            String[] pkgs = pm.getPackagesForUid(mUid);
+            
+            // If there is one package with this uid, that is what we want.
+            if (pkgs.length == 1) {
+                try {
+                    ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], 0);
+                    mDisplayLabel = ai.loadLabel(pm);
+                    mLabel = mDisplayLabel.toString();
+                    mPackageInfo = ai;
+                    return;
+                } catch (PackageManager.NameNotFoundException e) {
+                }
+            }
+            
+            // If there are multiple, see if one gives us the official name
+            // for this uid.
+            for (String name : pkgs) {
+                try {
+                    PackageInfo pi = pm.getPackageInfo(name, 0);
+                    if (pi.sharedUserLabel != 0) {
+                        CharSequence nm = pm.getText(name,
+                                pi.sharedUserLabel, pi.applicationInfo);
+                        if (nm != null) {
+                            mDisplayLabel = nm;
+                            mLabel = nm.toString();
+                            mPackageInfo = pi.applicationInfo;
+                            return;
+                        }
+                    }
+                } catch (PackageManager.NameNotFoundException e) {
+                }
+            }
+            
+            // If still don't have anything to display, just use the
+            // service info.
+            if (mServices.size() > 0) {
+                mPackageInfo = mServices.values().iterator().next()
+                        .mServiceInfo.applicationInfo;
+                mDisplayLabel = mPackageInfo.loadLabel(pm);
+                mLabel = mDisplayLabel.toString();
+                return;
+            }
+            
+            // Finally... whatever, just pick the first package's name.
+            try {
+                ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], 0);
+                mDisplayLabel = ai.loadLabel(pm);
+                mLabel = mDisplayLabel.toString();
+                mPackageInfo = ai;
+                return;
+            } catch (PackageManager.NameNotFoundException e) {
+            }
+        }
+        
+        boolean updateService(Context context,
+                ActivityManager.RunningServiceInfo service) {
+            final PackageManager pm = context.getPackageManager();
+            
+            boolean changed = false;
+            ServiceItem si = mServices.get(service.service);
+            if (si == null) {
+                changed = true;
+                si = new ServiceItem();
+                si.mRunningService = service;
+                try {
+                    si.mServiceInfo = pm.getServiceInfo(service.service, 0);
+                } catch (PackageManager.NameNotFoundException e) {
+                }
+                si.mDisplayLabel = makeLabel(pm,
+                        si.mRunningService.service.getClassName(), si.mServiceInfo);
+                mLabel = mDisplayLabel != null ? mDisplayLabel.toString() : null;
+                si.mPackageInfo = si.mServiceInfo.applicationInfo;
+                mServices.put(service.service, si);
+            }
+            si.mCurSeq = mCurSeq;
+            si.mRunningService = service;
+            long activeSince = service.restarting == 0 ? service.activeSince : -1;
+            if (si.mActiveSince != activeSince) {
+                si.mActiveSince = activeSince;
+                changed = true;
+            }
+            if (service.clientPackage != null && service.clientLabel != 0) {
+                if (si.mShownAsStarted) {
+                    si.mShownAsStarted = false;
+                    changed = true;
+                }
+                try {
+                    Resources clientr = pm.getResourcesForApplication(service.clientPackage);
+                    String label = clientr.getString(service.clientLabel);
+                    si.mDescription = context.getResources().getString(
+                            R.string.service_client_name, label);
+                } catch (PackageManager.NameNotFoundException e) {
+                    si.mDescription = null;
+                }
+            } else {
+                if (!si.mShownAsStarted) {
+                    si.mShownAsStarted = true;
+                    changed = true;
+                }
+                si.mDescription = context.getResources().getString(
+                        R.string.service_started_by_app);
+            }
+            
+            return changed;
+        }
+        
+        boolean updateSize(Context context, Debug.MemoryInfo mem, int curSeq) {
+            mSize = ((long)mem.getTotalPss()) * 1024;
+            if (mCurSeq == curSeq) {
+                String sizeStr = Formatter.formatShortFileSize(
+                        context, mSize);
+                if (!sizeStr.equals(mSizeStr)){
+                    mSizeStr = sizeStr;
+                    // We update this on the second tick where we update just
+                    // the text in the current items, so no need to say we
+                    // changed here.
+                    return false;
+                }
+            }
+            return false;
+        }
+        
+        boolean buildDependencyChain(Context context, PackageManager pm, int curSeq) {
+            final int NP = mDependentProcesses.size();
+            boolean changed = false;
+            for (int i=0; i<NP; i++) {
+                ProcessItem proc = mDependentProcesses.valueAt(i);
+                if (proc.mClient != this) {
+                    changed = true;
+                    proc.mClient = this;
+                }
+                proc.mCurSeq = curSeq;
+                proc.ensureLabel(pm);
+                changed |= proc.buildDependencyChain(context, pm, curSeq);
+            }
+            
+            if (mLastNumDependentProcesses != mDependentProcesses.size()) {
+                changed = true;
+                mLastNumDependentProcesses = mDependentProcesses.size();
+            }
+            
+            return changed;
+        }
+        
+        void addDependentProcesses(ArrayList<BaseItem> dest,
+                ArrayList<ProcessItem> destProc) {
+            final int NP = mDependentProcesses.size();
+            for (int i=0; i<NP; i++) {
+                ProcessItem proc = mDependentProcesses.valueAt(i);
+                proc.addDependentProcesses(dest, destProc);
+                dest.add(proc);
+                if (proc.mPid > 0) {
+                    destProc.add(proc);
+                }
+            }
+        }
+    }
+
+    static class MergedItem extends BaseItem {
+        ProcessItem mProcess;
+        final ArrayList<ProcessItem> mOtherProcesses = new ArrayList<ProcessItem>();
+        final ArrayList<ServiceItem> mServices = new ArrayList<ServiceItem>();
+        
+        private int mLastNumProcesses = -1, mLastNumServices = -1;
+
+        MergedItem() {
+            super(false);
+        }
+        
+        boolean update(Context context, boolean background) {
+            mPackageInfo = mProcess.mPackageInfo;
+            mDisplayLabel = mProcess.mDisplayLabel;
+            mLabel = mProcess.mLabel;
+            mBackground = background;
+            
+            if (!mBackground) {
+                int numProcesses = (mProcess.mPid > 0 ? 1 : 0) + mOtherProcesses.size();
+                int numServices = mServices.size();
+                if (mLastNumProcesses != numProcesses || mLastNumServices != numServices) {
+                    mLastNumProcesses = numProcesses;
+                    mLastNumServices = numServices;
+                    int resid = R.string.running_processes_item_description_s_s;
+                    if (numProcesses != 1) {
+                        resid = numServices != 1
+                                ? R.string.running_processes_item_description_p_p
+                                : R.string.running_processes_item_description_p_s;
+                    } else if (numServices != 1) {
+                        resid = R.string.running_processes_item_description_s_p;
+                    }
+                    mDescription = context.getResources().getString(resid, numProcesses,
+                            numServices);
+                }
+            }
+            
+            mActiveSince = -1;
+            for (int i=0; i<mServices.size(); i++) {
+                ServiceItem si = mServices.get(i);
+                if (si.mActiveSince >= 0 && mActiveSince < si.mActiveSince) {
+                    mActiveSince = si.mActiveSince;
+                }
+            }
+            
+            return false;
+        }
+        
+        boolean updateSize(Context context) {
+            mSize = mProcess.mSize;
+            for (int i=0; i<mOtherProcesses.size(); i++) {
+                mSize += mOtherProcesses.get(i).mSize;
+            }
+            
+            String sizeStr = Formatter.formatShortFileSize(
+                    context, mSize);
+            if (!sizeStr.equals(mSizeStr)){
+                mSizeStr = sizeStr;
+                // We update this on the second tick where we update just
+                // the text in the current items, so no need to say we
+                // changed here.
+                return false;
+            }
+            return false;
+        }
+    }
+    
+    static class ServiceProcessComparator implements Comparator<ProcessItem> {
+        public int compare(ProcessItem object1, ProcessItem object2) {
+            if (object1.mIsStarted != object2.mIsStarted) {
+                // Non-started processes go last.
+                return object1.mIsStarted ? -1 : 1;
+            }
+            if (object1.mIsSystem != object2.mIsSystem) {
+                // System processes go below non-system.
+                return object1.mIsSystem ? 1 : -1;
+            }
+            if (object1.mActiveSince != object2.mActiveSince) {
+                // Remaining ones are sorted with the longest running
+                // services last.
+                return (object1.mActiveSince > object2.mActiveSince) ? -1 : 1;
+            }
+            return 0;
+        }
+    }
+    
+    static CharSequence makeLabel(PackageManager pm,
+            String className, PackageItemInfo item) {
+        if (item != null && (item.labelRes != 0
+                || item.nonLocalizedLabel != null)) {
+            CharSequence label = item.loadLabel(pm);
+            if (label != null) {
+                return label;
+            }
+        }
+        
+        String label = className;
+        int tail = label.lastIndexOf('.');
+        if (tail >= 0) {
+            label = label.substring(tail+1, label.length());
+        }
+        return label;
+    }
+    
+    static RunningState getInstance(Context context) {
+        synchronized (sGlobalLock) {
+            if (sInstance == null) {
+                sInstance = new RunningState(context);
+            }
+            return sInstance;
+        }
+    }
+
+    private RunningState(Context context) {
+        mApplicationContext = context.getApplicationContext();
+        mAm = (ActivityManager)mApplicationContext.getSystemService(Context.ACTIVITY_SERVICE);
+        mPm = mApplicationContext.getPackageManager();
+        mResumed = false;
+        mBackgroundThread = new HandlerThread("RunningState:Background");
+        mBackgroundThread.start();
+        mBackgroundHandler = new BackgroundHandler(mBackgroundThread.getLooper());
+    }
+
+    void resume(OnRefreshUiListener listener) {
+        synchronized (mLock) {
+            mResumed = true;
+            mRefreshUiListener = listener;
+            if (!mBackgroundHandler.hasMessages(MSG_UPDATE_CONTENTS)) {
+                mBackgroundHandler.sendEmptyMessage(MSG_UPDATE_CONTENTS);
+            }
+            mHandler.sendEmptyMessage(MSG_UPDATE_TIME);
+        }
+    }
+
+    void updateNow() {
+        synchronized (mLock) {
+            mBackgroundHandler.removeMessages(MSG_UPDATE_CONTENTS);
+            mBackgroundHandler.sendEmptyMessage(MSG_UPDATE_CONTENTS);
+        }
+    }
+
+    boolean hasData() {
+        synchronized (mLock) {
+            return mHaveData;
+        }
+    }
+
+    void waitForData() {
+        synchronized (mLock) {
+            while (!mHaveData) {
+                try {
+                    mLock.wait(0);
+                } catch (InterruptedException e) {
+                }
+            }
+        }
+    }
+
+    void pause() {
+        synchronized (mLock) {
+            mResumed = false;
+            mRefreshUiListener = null;
+            mHandler.removeMessages(MSG_UPDATE_TIME);
+        }
+    }
+
+    private boolean isInterestingProcess(ActivityManager.RunningAppProcessInfo pi) {
+        if ((pi.flags&ActivityManager.RunningAppProcessInfo.FLAG_CANT_SAVE_STATE) != 0) {
+            return true;
+        }
+        if ((pi.flags&ActivityManager.RunningAppProcessInfo.FLAG_PERSISTENT) == 0
+                && pi.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
+                && pi.importanceReasonCode
+                        == ActivityManager.RunningAppProcessInfo.REASON_UNKNOWN) {
+            return true;
+        }
+        return false;
+    }
+
+    private boolean update(Context context, ActivityManager am) {
+        final PackageManager pm = context.getPackageManager();
+        
+        mSequence++;
+        
+        boolean changed = false;
+        
+        List<ActivityManager.RunningServiceInfo> services 
+                = am.getRunningServices(MAX_SERVICES);
+        final int NS = services != null ? services.size() : 0;
+        for (int i=0; i<NS; i++) {
+            ActivityManager.RunningServiceInfo si = services.get(i);
+            // We are not interested in services that have not been started
+            // and don't have a known client, because
+            // there is nothing the user can do about them.
+            if (!si.started && si.clientLabel == 0) {
+                continue;
+            }
+            // We likewise don't care about services running in a
+            // persistent process like the system or phone.
+            if ((si.flags&ActivityManager.RunningServiceInfo.FLAG_PERSISTENT_PROCESS)
+                    != 0) {
+                continue;
+            }
+            
+            HashMap<String, ProcessItem> procs = mServiceProcessesByName.get(si.uid);
+            if (procs == null) {
+                procs = new HashMap<String, ProcessItem>();
+                mServiceProcessesByName.put(si.uid, procs);
+            }
+            ProcessItem proc = procs.get(si.process);
+            if (proc == null) {
+                changed = true;
+                proc = new ProcessItem(context, si.uid, si.process);
+                procs.put(si.process, proc);
+            }
+            
+            if (proc.mCurSeq != mSequence) {
+                int pid = si.restarting == 0 ? si.pid : 0;
+                if (pid != proc.mPid) {
+                    changed = true;
+                    if (proc.mPid != pid) {
+                        if (proc.mPid != 0) {
+                            mServiceProcessesByPid.remove(proc.mPid);
+                        }
+                        if (pid != 0) {
+                            mServiceProcessesByPid.put(pid, proc);
+                        }
+                        proc.mPid = pid;
+                    }
+                }
+                proc.mDependentProcesses.clear();
+                proc.mCurSeq = mSequence;
+            }
+            changed |= proc.updateService(context, si);
+        }
+        
+        // Now update the map of other processes that are running (but
+        // don't have services actively running inside them).
+        List<ActivityManager.RunningAppProcessInfo> processes
+                = am.getRunningAppProcesses();
+        final int NP = processes != null ? processes.size() : 0;
+        for (int i=0; i<NP; i++) {
+            ActivityManager.RunningAppProcessInfo pi = processes.get(i);
+            ProcessItem proc = mServiceProcessesByPid.get(pi.pid);
+            if (proc == null) {
+                // This process is not one that is a direct container
+                // of a service, so look for it in the secondary
+                // running list.
+                proc = mRunningProcesses.get(pi.pid);
+                if (proc == null) {
+                    changed = true;
+                    proc = new ProcessItem(context, pi.uid, pi.processName);
+                    proc.mPid = pi.pid;
+                    mRunningProcesses.put(pi.pid, proc);
+                }
+                proc.mDependentProcesses.clear();
+            }
+            
+            if (isInterestingProcess(pi)) {
+                if (!mInterestingProcesses.contains(proc)) {
+                    changed = true;
+                    mInterestingProcesses.add(proc);
+                }
+                proc.mCurSeq = mSequence;
+                proc.ensureLabel(pm);
+            }
+            
+            proc.mRunningSeq = mSequence;
+            proc.mRunningProcessInfo = pi;
+        }
+        
+        // Build the chains from client processes to the process they are
+        // dependent on; also remove any old running processes.
+        int NRP = mRunningProcesses.size();
+        for (int i=0; i<NRP; i++) {
+            ProcessItem proc = mRunningProcesses.valueAt(i);
+            if (proc.mRunningSeq == mSequence) {
+                int clientPid = proc.mRunningProcessInfo.importanceReasonPid;
+                if (clientPid != 0) {
+                    ProcessItem client = mServiceProcessesByPid.get(clientPid);
+                    if (client == null) {
+                        client = mRunningProcesses.get(clientPid);
+                    }
+                    if (client != null) {
+                        client.mDependentProcesses.put(proc.mPid, proc);
+                    }
+                } else {
+                    // In this pass the process doesn't have a client.
+                    // Clear to make sure that, if it later gets the same one,
+                    // we will detect the change.
+                    proc.mClient = null;
+                }
+            } else {
+                changed = true;
+                mRunningProcesses.remove(mRunningProcesses.keyAt(i));
+            }
+        }
+        
+        // Remove any old interesting processes.
+        int NHP = mInterestingProcesses.size();
+        for (int i=0; i<NHP; i++) {
+            ProcessItem proc = mInterestingProcesses.get(i);
+            if (mRunningProcesses.get(proc.mPid) == null) {
+                changed = true;
+                mInterestingProcesses.remove(i);
+                i--;
+                NHP--;
+            }
+        }
+        
+        // Follow the tree from all primary service processes to all
+        // processes they are dependent on, marking these processes as
+        // still being active and determining if anything has changed.
+        final int NAP = mServiceProcessesByPid.size();
+        for (int i=0; i<NAP; i++) {
+            ProcessItem proc = mServiceProcessesByPid.valueAt(i);
+            if (proc.mCurSeq == mSequence) {
+                changed |= proc.buildDependencyChain(context, pm, mSequence);
+            }
+        }
+        
+        // Look for services and their primary processes that no longer exist...
+        for (int i=0; i<mServiceProcessesByName.size(); i++) {
+            HashMap<String, ProcessItem> procs = mServiceProcessesByName.valueAt(i);
+            Iterator<ProcessItem> pit = procs.values().iterator();
+            while (pit.hasNext()) {
+                ProcessItem pi = pit.next();
+                if (pi.mCurSeq == mSequence) {
+                    pi.ensureLabel(pm);
+                    if (pi.mPid == 0) {
+                        // Sanity: a non-process can't be dependent on
+                        // anything.
+                        pi.mDependentProcesses.clear();
+                    }
+                } else {
+                    changed = true;
+                    pit.remove();
+                    if (procs.size() == 0) {
+                        mServiceProcessesByName.remove(mServiceProcessesByName.keyAt(i));
+                    }
+                    if (pi.mPid != 0) {
+                        mServiceProcessesByPid.remove(pi.mPid);
+                    }
+                    continue;
+                }
+                Iterator<ServiceItem> sit = pi.mServices.values().iterator();
+                while (sit.hasNext()) {
+                    ServiceItem si = sit.next();
+                    if (si.mCurSeq != mSequence) {
+                        changed = true;
+                        sit.remove();
+                    }
+                }
+            }
+        }
+        
+        if (changed) {
+            // First determine an order for the services.
+            ArrayList<ProcessItem> sortedProcesses = new ArrayList<ProcessItem>();
+            for (int i=0; i<mServiceProcessesByName.size(); i++) {
+                for (ProcessItem pi : mServiceProcessesByName.valueAt(i).values()) {
+                    pi.mIsSystem = false;
+                    pi.mIsStarted = true;
+                    pi.mActiveSince = Long.MAX_VALUE;
+                    for (ServiceItem si : pi.mServices.values()) {
+                        if (si.mServiceInfo != null
+                                && (si.mServiceInfo.applicationInfo.flags
+                                        & ApplicationInfo.FLAG_SYSTEM) != 0) {
+                            pi.mIsSystem = true;
+                        }
+                        if (si.mRunningService != null
+                                && si.mRunningService.clientLabel != 0) {
+                            pi.mIsStarted = false;
+                            if (pi.mActiveSince > si.mRunningService.activeSince) {
+                                pi.mActiveSince = si.mRunningService.activeSince;
+                            }
+                        }
+                    }
+                    sortedProcesses.add(pi);
+                }
+            }
+            
+            Collections.sort(sortedProcesses, mServiceProcessComparator);
+            
+            ArrayList<BaseItem> newItems = new ArrayList<BaseItem>();
+            ArrayList<MergedItem> newMergedItems = new ArrayList<MergedItem>();
+            mProcessItems.clear();
+            for (int i=0; i<sortedProcesses.size(); i++) {
+                ProcessItem pi = sortedProcesses.get(i);
+                pi.mNeedDivider = false;
+                
+                int firstProc = mProcessItems.size();
+                // First add processes we are dependent on.
+                pi.addDependentProcesses(newItems, mProcessItems);
+                // And add the process itself.
+                newItems.add(pi);
+                if (pi.mPid > 0) {
+                    mProcessItems.add(pi);
+                }
+                
+                // Now add the services running in it.
+                MergedItem mergedItem = null;
+                boolean haveAllMerged = false;
+                boolean needDivider = false;
+                for (ServiceItem si : pi.mServices.values()) {
+                    si.mNeedDivider = needDivider;
+                    needDivider = true;
+                    newItems.add(si);
+                    if (si.mMergedItem != null) {
+                        if (mergedItem != null && mergedItem != si.mMergedItem) {
+                            haveAllMerged = false;
+                        }
+                        mergedItem = si.mMergedItem;
+                    } else {
+                        haveAllMerged = false;
+                    }
+                }
+                
+                if (!haveAllMerged || mergedItem == null
+                        || mergedItem.mServices.size() != pi.mServices.size()) {
+                    // Whoops, we need to build a new MergedItem!
+                    mergedItem = new MergedItem();
+                    for (ServiceItem si : pi.mServices.values()) {
+                        mergedItem.mServices.add(si);
+                        si.mMergedItem = mergedItem;
+                    }
+                    mergedItem.mProcess = pi;
+                    mergedItem.mOtherProcesses.clear();
+                    for (int mpi=firstProc; mpi<(mProcessItems.size()-1); mpi++) {
+                        mergedItem.mOtherProcesses.add(mProcessItems.get(mpi));
+                    }
+                }
+                
+                mergedItem.update(context, false);
+                newMergedItems.add(mergedItem);
+            }
+            
+            // Finally, interesting processes need to be shown and will
+            // go at the top.
+            NHP = mInterestingProcesses.size();
+            for (int i=0; i<NHP; i++) {
+                ProcessItem proc = mInterestingProcesses.get(i);
+                if (proc.mClient == null && proc.mServices.size() <= 0) {
+                    if (proc.mMergedItem == null) {
+                        proc.mMergedItem = new MergedItem();
+                        proc.mMergedItem.mProcess = proc;
+                    }
+                    proc.mMergedItem.update(context, false);
+                    newMergedItems.add(0, proc.mMergedItem);
+                    mProcessItems.add(proc);
+                }
+            }
+            
+            synchronized (mLock) {
+                mItems = newItems;
+                mMergedItems = newMergedItems;
+            }
+        }
+        
+        // Count number of interesting other (non-active) processes, and
+        // build a list of all processes we will retrieve memory for.
+        mAllProcessItems.clear();
+        mAllProcessItems.addAll(mProcessItems);
+        int numBackgroundProcesses = 0;
+        int numForegroundProcesses = 0;
+        int numServiceProcesses = 0;
+        NRP = mRunningProcesses.size();
+        for (int i=0; i<NRP; i++) {
+            ProcessItem proc = mRunningProcesses.valueAt(i);
+            if (proc.mCurSeq != mSequence) {
+                // We didn't hit this process as a dependency on one
+                // of our active ones, so add it up if needed.
+                if (proc.mRunningProcessInfo.importance >=
+                        ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
+                    numBackgroundProcesses++;
+                    mAllProcessItems.add(proc);
+                } else if (proc.mRunningProcessInfo.importance <=
+                        ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
+                    numForegroundProcesses++;
+                    mAllProcessItems.add(proc);
+                } else {
+                    Log.i("RunningState", "Unknown non-service process: "
+                            + proc.mProcessName + " #" + proc.mPid);
+                }
+            } else {
+                numServiceProcesses++;
+            }
+        }
+        
+        long backgroundProcessMemory = 0;
+        long foregroundProcessMemory = 0;
+        long serviceProcessMemory = 0;
+        ArrayList<MergedItem> newBackgroundItems = null;
+        try {
+            final int numProc = mAllProcessItems.size();
+            int[] pids = new int[numProc];
+            for (int i=0; i<numProc; i++) {
+                pids[i] = mAllProcessItems.get(i).mPid;
+            }
+            Debug.MemoryInfo[] mem = ActivityManagerNative.getDefault()
+                    .getProcessMemoryInfo(pids);
+            int bgIndex = 0;
+            for (int i=0; i<pids.length; i++) {
+                ProcessItem proc = mAllProcessItems.get(i);
+                changed |= proc.updateSize(context, mem[i], mSequence);
+                if (proc.mCurSeq == mSequence) {
+                    serviceProcessMemory += proc.mSize;
+                } else if (proc.mRunningProcessInfo.importance >=
+                        ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
+                    backgroundProcessMemory += proc.mSize;
+                    MergedItem mergedItem;
+                    if (newBackgroundItems != null) {
+                        mergedItem = proc.mMergedItem = new MergedItem();
+                        proc.mMergedItem.mProcess = proc;
+                        newBackgroundItems.add(mergedItem);
+                    } else {
+                        if (bgIndex >= mBackgroundItems.size()
+                                || mBackgroundItems.get(bgIndex).mProcess != proc) {
+                            newBackgroundItems = new ArrayList<MergedItem>(numBackgroundProcesses);
+                            for (int bgi=0; bgi<bgIndex; bgi++) {
+                                newBackgroundItems.add(mBackgroundItems.get(bgi));
+                            }
+                            mergedItem = proc.mMergedItem = new MergedItem();
+                            proc.mMergedItem.mProcess = proc;
+                            newBackgroundItems.add(mergedItem);
+                        } else {
+                            mergedItem = mBackgroundItems.get(bgIndex);
+                        }
+                    }
+                    mergedItem.update(context, true);
+                    mergedItem.updateSize(context);
+                    bgIndex++;
+                } else if (proc.mRunningProcessInfo.importance <=
+                        ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
+                    foregroundProcessMemory += proc.mSize;
+                }
+            }
+        } catch (RemoteException e) {
+        }
+        
+        if (newBackgroundItems == null) {
+            // One or more at the bottom may no longer exit.
+            if (mBackgroundItems.size() > numBackgroundProcesses) {
+                newBackgroundItems = new ArrayList<MergedItem>(numBackgroundProcesses);
+                for (int bgi=0; bgi<numBackgroundProcesses; bgi++) {
+                    newBackgroundItems.add(mBackgroundItems.get(bgi));
+                }
+            }
+        }
+
+        for (int i=0; i<mMergedItems.size(); i++) {
+            mMergedItems.get(i).updateSize(context);
+        }
+        
+        synchronized (mLock) {
+            mNumBackgroundProcesses = numBackgroundProcesses;
+            mNumForegroundProcesses = numForegroundProcesses;
+            mNumServiceProcesses = numServiceProcesses;
+            mBackgroundProcessMemory = backgroundProcessMemory;
+            mForegroundProcessMemory = foregroundProcessMemory;
+            mServiceProcessMemory = serviceProcessMemory;
+            if (newBackgroundItems != null) {
+                mBackgroundItems = newBackgroundItems;
+                if (mWatchingBackgroundItems) {
+                    changed = true;
+                }
+            }
+            if (!mHaveData) {
+                mHaveData = true;
+                mLock.notifyAll();
+            }
+        }
+        
+        return changed;
+    }
+    
+    ArrayList<BaseItem> getCurrentItems() {
+        synchronized (mLock) {
+            return mItems;
+        }
+    }
+    
+    void setWatchingBackgroundItems(boolean watching) {
+        synchronized (mLock) {
+            mWatchingBackgroundItems = watching;
+        }
+    }
+
+    ArrayList<MergedItem> getCurrentMergedItems() {
+        synchronized (mLock) {
+            return mMergedItems;
+        }
+    }
+
+    ArrayList<MergedItem> getCurrentBackgroundItems() {
+        synchronized (mLock) {
+            return mBackgroundItems;
+        }
+    }
+}
diff --git a/src/com/android/settings/battery_history/BatteryHistory.java b/src/com/android/settings/battery_history/BatteryHistory.java
deleted file mode 100644
index 06f38ae..0000000
--- a/src/com/android/settings/battery_history/BatteryHistory.java
+++ /dev/null
@@ -1,916 +0,0 @@
-/*
- * Copyright (C) 2006 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.battery_history;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Formatter;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-
-import com.android.internal.app.IBatteryStats;
-import com.android.settings.R;
-
-import android.app.Activity;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.BatteryStats;
-import android.os.Bundle;
-import android.os.Parcel;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.os.SystemClock;
-import android.os.BatteryStats.Timer;
-import android.os.BatteryStats.Uid;
-import android.util.Log;
-import android.util.LogPrinter;
-import android.util.SparseArray;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.AdapterView;
-import android.widget.Button;
-import android.widget.LinearLayout;
-import android.widget.Spinner;
-import android.widget.TextView;
-import android.widget.AdapterView.OnItemSelectedListener;
-
-public class BatteryHistory extends Activity implements OnClickListener, OnItemSelectedListener {
-    private static final String TAG = "BatteryHistory";
-
-    private static final int SECONDS_PER_MINUTE = 60;
-    private static final int SECONDS_PER_HOUR = 60 * 60;
-    private static final int SECONDS_PER_DAY = 24 * 60 * 60;
-    
-    // Must be in sync with the values in res/values/array.xml (id battery_history_type_spinner)
-    private static final int CPU_USAGE = 0;
-    private static final int NETWORK_USAGE = 1;
-    private static final int GPS_USAGE = 2;
-    private static final int SENSOR_USAGE = 3;
-    private static final int WAKELOCK_USAGE = 4;
-    private static final int MISC_USAGE = 5;
-
-    // Must be in sync with the values in res/values/array.xml (id battery_history_which_spinner)
-    private static final int UNPLUGGED = 0;
-    private static final int CURRENT = 1;
-    private static final int TOTAL = 2;
-    
-    private BatteryStats mStats;
-    private int mWhich = BatteryStats.STATS_UNPLUGGED;
-    private int mType = MISC_USAGE;
-    
-    private GraphableButton[] mButtons;
-    IBatteryStats mBatteryInfo;
-    
-    private List<CpuUsage> mCpuUsage = new ArrayList<CpuUsage>();
-    private List<NetworkUsage> mNetworkUsage = new ArrayList<NetworkUsage>();
-    private List<SensorUsage> mSensorUsage = new ArrayList<SensorUsage>();
-    private List<SensorUsage> mGpsUsage = new ArrayList<SensorUsage>();
-    private List<WakelockUsage> mWakelockUsage = new ArrayList<WakelockUsage>();
-    private List<MiscUsage> mMiscUsage = new ArrayList<MiscUsage>();
-    
-    private boolean mHaveCpuUsage, mHaveNetworkUsage, mHaveSensorUsage,
-            mHaveWakelockUsage, mHaveMiscUsage;
-    
-    private LinearLayout mGraphLayout;
-    private LinearLayout mTextLayout;
-    private TextView mMessageText;
-    private TextView mDetailsText;
-    private Button mDetailsBackButton;
-    private Spinner mTypeSpinner;
-    private Spinner mWhichSpinner;
-    
-    private boolean mDetailsShown = false;
-    
-    private static String getLabel(String packageName, PackageManager pm) {
-        try {
-            ApplicationInfo ai = pm.getApplicationInfo(packageName, 0);
-            CharSequence label = ai.loadLabel(pm);
-            if (label != null) {
-                return label.toString();
-            }
-        } catch (NameNotFoundException e) {
-            return packageName;
-        }
-        
-        return "";
-    }
-    
-    void formatTime(double millis, StringBuilder sb) {
-        int seconds = (int) Math.floor(millis / 1000);
-        
-        int days = 0, hours = 0, minutes = 0;
-        if (seconds > SECONDS_PER_DAY) {
-            days = seconds / SECONDS_PER_DAY;
-            seconds -= days * SECONDS_PER_DAY;
-        }
-        if (seconds > SECONDS_PER_HOUR) {
-            hours = seconds / SECONDS_PER_HOUR;
-            seconds -= hours * SECONDS_PER_HOUR;
-        }
-        if (seconds > SECONDS_PER_MINUTE) {
-            minutes = seconds / SECONDS_PER_MINUTE;
-            seconds -= minutes * SECONDS_PER_MINUTE;
-        }
-        if (days > 0) {
-            sb.append(getString(R.string.battery_history_days, days, hours, minutes, seconds));
-        } else if (hours > 0) {
-            sb.append(getString(R.string.battery_history_hours, hours, minutes, seconds));
-        } else if (minutes > 0) { 
-            sb.append(getString(R.string.battery_history_minutes, minutes, seconds));
-        } else {
-            sb.append(getString(R.string.battery_history_seconds, seconds));
-        }
-    }
-    
-    abstract class Graphable implements Comparable<Graphable> {        
-        protected String mName;
-        protected String mNamePackage;
-        protected boolean mUniqueName;
-        protected String[] mPackages;
-        protected String[] mPackageNames;
-        
-        public abstract String getLabel();
-        public abstract double getSortValue();
-        public abstract double[] getValues();
-        public abstract void getInfo(StringBuilder info);
-        
-        public double getMaxValue() {
-            return -Double.MAX_VALUE;            
-        }
-        
-        public int compareTo(Graphable o) {
-            double t = getSortValue();
-            double ot = o.getSortValue();
-            if (t < ot) {
-                // Largest first
-                return 1;
-            } else if (t > ot) {
-                return -1;
-            } else {
-                return 0;
-            }
-        }
-                
-        // Side effects: sets mName and mUniqueName
-        void getNameForUid(int uid) {
-            PackageManager pm = getPackageManager();
-            mPackages = pm.getPackagesForUid(uid);
-            if (mPackages == null) {
-                mName = Integer.toString(uid);
-                mNamePackage = null;
-                return;
-            }
-            
-            mPackageNames = new String[mPackages.length];
-            System.arraycopy(mPackages, 0, mPackageNames, 0, mPackages.length);
-            
-            // Convert package names to user-facing labels where possible
-            for (int i = 0; i < mPackageNames.length; i++) {
-                mPackageNames[i] = BatteryHistory.getLabel(mPackageNames[i], pm);
-            }
-
-            if (mPackageNames.length == 1) {
-                mNamePackage = mPackages[0];
-                mName = mPackageNames[0];
-                mUniqueName = true;
-            } else {
-                mName = getString(R.string.battery_history_uid, uid); // Default name
-                // Look for an official name for this UID.
-                for (String name : mPackages) {
-                    try {
-                        PackageInfo pi = pm.getPackageInfo(name, 0);
-                        if (pi.sharedUserLabel != 0) {
-                            CharSequence nm = pm.getText(name,
-                                    pi.sharedUserLabel, pi.applicationInfo);
-                            if (nm != null) {
-                                mName = nm.toString();
-                                break;
-                            }
-                        }
-                    } catch (PackageManager.NameNotFoundException e) {
-                    }
-                }
-            }
-        }
-    }
-
-    class CpuUsage extends Graphable {
-        String mProcess;
-        double[] mUsage;
-        double mTotalRuntime;
-        long mStarts;
-        
-        public CpuUsage(int uid, String process, long userTime, long systemTime,
-                long starts, long totalRuntime) {
-            getNameForUid(uid);
-            mProcess = process;
-            PackageManager pm = BatteryHistory.this.getPackageManager();
-            mName = BatteryHistory.getLabel(process, pm);
-            mUsage = new double[2];
-            
-            mUsage[0] = userTime;
-            mUsage[1] = userTime + systemTime;
-            mTotalRuntime = totalRuntime;
-            mStarts = starts;
-        }
-        
-        public String getLabel() {
-            return mName;
-        }
-        
-        public double getSortValue() {
-            return mUsage[1];
-        }
-        
-        public double[] getValues() {
-            return mUsage;
-        }
-        
-        public double getMaxValue() {
-            return mTotalRuntime;            
-        }
-        
-        public void getInfo(StringBuilder info) {
-            info.append(getString(R.string.battery_history_cpu_usage, mProcess));
-            info.append("\n\n");
-            info.append(getString(R.string.battery_history_user_time));
-            formatTime(mUsage[0] * 10, info);
-            info.append('\n');
-            info.append(getString(R.string.battery_history_system_time));
-            formatTime((mUsage[1] - mUsage[0]) * 10, info);
-            info.append('\n');
-            info.append(getString(R.string.battery_history_total_time));
-            formatTime((mUsage[1]) * 10, info);
-            info.append('\n');
-            info.append(getString(R.string.battery_history_starts, mStarts));
-        }
-    }
-    
-    class NetworkUsage extends Graphable {
-        double[] mUsage;
-        
-        public NetworkUsage(int uid, long received, long sent) {
-            getNameForUid(uid);
-            
-            mUsage = new double[2];
-            mUsage[0] = received;
-            mUsage[1] = received + sent;
-        }
-        
-        public String getLabel() {
-            return mName;
-        }
-        
-        public double getSortValue() {
-            return mUsage[1];
-        }
-        
-        public double[] getValues() {
-            return mUsage;
-        }
-        
-        public void getInfo(StringBuilder info) {
-            info.append(getString(R.string.battery_history_network_usage, mName));
-            info.append("\n\n");
-            info.append(getString(R.string.battery_history_bytes_received, (long) mUsage[0]));
-            info.append('\n');
-            info.append(getString(R.string.battery_history_bytes_sent,
-                    (long) mUsage[1] - (long) mUsage[0]));
-            info.append('\n');
-            info.append(getString(R.string.battery_history_bytes_total, (long) mUsage[1]));
-
-            if (!mUniqueName) {
-                info.append("\n\n");
-                info.append(getString(R.string.battery_history_packages_sharing_this_uid));
-                info.append('\n');
-
-                PackageManager pm = BatteryHistory.this.getPackageManager();
-                List<String> names = new ArrayList<String>();
-                for (String name : mPackageNames) {
-                    names.add(BatteryHistory.getLabel(name, pm));
-                }
-                Collections.sort(names);
-                for (String name : names) {
-                    info.append("    ");
-                    info.append(name);
-                    info.append('\n');
-                }
-            }
-        }
-    }
-    
-    class SensorUsage extends Graphable {
-        double[] mUsage;
-        double mTotalRealtime;
-        int mCount;
-        
-        public SensorUsage(int uid, long time, int count, long totalRealtime) {
-            getNameForUid(uid);
-            
-            mUsage = new double[1];
-            mUsage[0] = time;
-            mTotalRealtime = totalRealtime;
-            
-            mCount = count;
-        }
-        
-        public String getLabel() {
-            return mName;
-        }
-        
-        public double getSortValue() {
-            return mUsage[0];
-        }
-        
-        public double[] getValues() {
-            return mUsage;
-        }
-        
-        public double getMaxValue() {
-            return mTotalRealtime;            
-        }
-        
-        public void getInfo(StringBuilder info) {
-            info.append(getString(R.string.battery_history_sensor));
-            info.append(mName);
-            info.append("\n\n");
-            info.append(getString(R.string.battery_history_total_time));
-            formatTime(mUsage[0], info);
-            info.append("\n\n");
-        }
-    }
-    
-    
-    class WakelockUsage extends Graphable {
-        double[] mUsage;
-        double mTotalRealtime;
-        int mCount;
-        
-        public WakelockUsage(int uid, long time, int count, long totalRealtime) {
-            getNameForUid(uid);
-            
-            mUsage = new double[1];
-            mUsage[0] = time;
-            mTotalRealtime = totalRealtime;
-            
-            mCount = count;
-        }
-        
-        public String getLabel() {
-            return mName;
-        }
-        
-        public double getSortValue() {
-            return mUsage[0];
-        }
-        
-        public double[] getValues() {
-            return mUsage;
-        }
-        
-        public double getMaxValue() {
-            return mTotalRealtime;            
-        }
-        
-        public void getInfo(StringBuilder info) {
-            info.append(getString(R.string.battery_history_wakelock));
-            info.append(mName);
-            info.append("\n\n");
-            info.append(getString(R.string.battery_history_total_time));
-            formatTime(mUsage[0], info);
-            info.append("\n\n");
-        }
-    }
-    
-    class MiscUsage extends Graphable {
-        int mInfoLabelRes;
-        String mInfoLabel;
-        double[] mUsage;
-        double mTotalRealtime;
-        
-        public MiscUsage(String name, int infoLabelRes, long value,
-                long totalRealtime) {
-            mName = name;
-            
-            mInfoLabelRes = infoLabelRes;
-            
-            mUsage = new double[2];
-            mUsage[0] = value;
-            mTotalRealtime = totalRealtime;
-        }
-        
-        public MiscUsage(String name, String infoLabel, long value,
-                long totalRealtime) {
-            mName = name;
-            
-            mInfoLabel = infoLabel;
-            
-            mUsage = new double[2];
-            mUsage[0] = value;
-            mTotalRealtime = totalRealtime;
-        }
-        
-        public String getLabel() {
-            return mName;
-        }
-        
-        public double getSortValue() {
-            return mUsage[1];
-        }
-        
-        public double[] getValues() {
-            return mUsage;
-        }
-        
-        public double getMaxValue() {
-            return mTotalRealtime;            
-        }
-        
-        public void getInfo(StringBuilder info) {
-            info.append(mInfoLabel != null ? mInfoLabel : getString(mInfoLabelRes));
-            info.append(' ');
-            formatTime(mUsage[0], info);
-            info.append(" (");
-            info.append((mUsage[0]*100)/mTotalRealtime);
-            info.append("%)");
-        }
-    }
-    
-    private List<? extends Graphable> getGraphRecords() {
-        switch (mType) {
-            case CPU_USAGE: return mCpuUsage;
-            case NETWORK_USAGE : return mNetworkUsage;
-            case SENSOR_USAGE: return mSensorUsage;
-            case GPS_USAGE: return mGpsUsage;
-            case WAKELOCK_USAGE: return mWakelockUsage;
-            case MISC_USAGE: return mMiscUsage;
-            default:
-                return (List<? extends Graphable>) null; // TODO
-        }
-    }
-    
-    private void displayGraph() {
-        Log.i(TAG, "displayGraph");
-
-        collectStatistics();
-        
-        // Hide the UI and selectively enable it below
-        mMessageText.setVisibility(View.GONE);
-        for (int i = 0; i < mButtons.length; i++) {
-            mButtons[i].setVisibility(View.INVISIBLE);
-        }
-        
-        double maxValue = -Double.MAX_VALUE;
-        
-        List<? extends Graphable> records = getGraphRecords();
-        for (Graphable g : records) {
-            double[] values = g.getValues();
-            maxValue = Math.max(maxValue, values[values.length - 1]);
-            maxValue = Math.max(maxValue, g.getMaxValue());
-        }
-        
-        int[] colors = new int[2];
-        colors[0] = 0xff0000ff;
-        colors[1] = 0xffff0000;
-        
-        for (int i = 0; i < mButtons.length; i++) {
-            mButtons[i].setVisibility(View.INVISIBLE);
-        }
-        
-        int numRecords = Math.min(records.size(), mButtons.length);
-        if (numRecords == 0) {
-             mMessageText.setVisibility(View.VISIBLE);
-             mMessageText.setText(R.string.battery_history_no_data);
-        } else {
-            for (int i = 0; i < numRecords; i++) {
-                Graphable r = records.get(i);           
-
-                mButtons[i].setText(r.getLabel());
-                mButtons[i].setValues(r.getValues(), maxValue);
-                mButtons[i].setVisibility(View.VISIBLE);
-            }
-        }
-    }
-    
-    private void hideDetails() {
-        mTextLayout.setVisibility(View.GONE);
-        mGraphLayout.setVisibility(View.VISIBLE);
-        mDetailsShown = false;
-    }
-    
-    private void showDetails(int id) {
-        mGraphLayout.setVisibility(View.GONE);
-        mTextLayout.setVisibility(View.VISIBLE);
-            
-        StringBuilder info = new StringBuilder();
-        List<? extends Graphable> records = getGraphRecords();
-        if (id < records.size()) {
-            Graphable record = records.get(id);
-            record.getInfo(info);
-        } else {
-            info.append(getString(R.string.battery_history_details_for, id));
-        }
-        mDetailsText.setText(info.toString());
-        mDetailsShown = true;
-    }
-
-    private void processCpuUsage() {
-        mCpuUsage.clear();
-        
-        long uSecTime = SystemClock.uptimeMillis() * 1000;
-        final long uSecNow = mStats.computeBatteryUptime(uSecTime, mWhich) / 1000;
-        
-        SparseArray<? extends Uid> uidStats = mStats.getUidStats();
-        final int NU = uidStats.size();
-        for (int iu = 0; iu < NU; iu++) {
-            Uid u = uidStats.valueAt(iu);
-
-            Map<String, ? extends BatteryStats.Uid.Proc> processStats = u.getProcessStats();
-            if (processStats.size() > 0) {
-                for (Map.Entry<String, ? extends BatteryStats.Uid.Proc> ent
-                        : processStats.entrySet()) {
-
-                    Uid.Proc ps = ent.getValue();
-                    long userTime = ps.getUserTime(mWhich);
-                    long systemTime = ps.getSystemTime(mWhich);
-                    long starts = ps.getStarts(mWhich);
-
-                    if (userTime != 0 || systemTime != 0) {
-                        mCpuUsage.add(new CpuUsage(u.getUid(), ent.getKey(),
-                                userTime, systemTime, starts, uSecNow));
-                    }
-                }
-            }
-        }
-        Collections.sort(mCpuUsage);
-    }
-    
-    private void processNetworkUsage() {
-        mNetworkUsage.clear();
-        
-        SparseArray<? extends Uid> uidStats = mStats.getUidStats();
-        final int NU = uidStats.size();
-        for (int iu = 0; iu < NU; iu++) {
-            Uid u = uidStats.valueAt(iu);
-            
-            long received = u.getTcpBytesReceived(mWhich);
-            long sent = u.getTcpBytesSent(mWhich);
-            if (received + sent > 0) {
-                mNetworkUsage.add(new NetworkUsage(u.getUid(), received, sent));
-            }
-        }
-        Collections.sort(mNetworkUsage);
-    }
-    
-    private void processSensorUsage() {
-        mGpsUsage.clear();
-        mSensorUsage.clear();
-        
-        long uSecTime = SystemClock.elapsedRealtime() * 1000;
-        final long uSecNow = mStats.computeBatteryRealtime(uSecTime, mWhich) / 1000;
-        
-        SparseArray<? extends Uid> uidStats = mStats.getUidStats();
-        final int NU = uidStats.size();
-        for (int iu = 0; iu < NU; iu++) {
-            Uid u = uidStats.valueAt(iu);
-            int uid = u.getUid();
-            
-            Map<Integer, ? extends BatteryStats.Uid.Sensor> sensorStats = u.getSensorStats();
-            long timeGps = 0;
-            int countGps = 0;
-            long timeOther = 0;
-            int countOther = 0;
-            if (sensorStats.size() > 0) {
-                for (Map.Entry<Integer, ? extends BatteryStats.Uid.Sensor> ent
-                        : sensorStats.entrySet()) {
-
-                    Uid.Sensor se = ent.getValue();
-                    int handle = se.getHandle();
-                    Timer timer = se.getSensorTime();
-                    if (timer != null) {
-                        // Convert from microseconds to milliseconds with rounding
-                        long totalTime = (timer.getTotalTimeLocked(uSecNow, mWhich) + 500) / 1000;
-                        int count = timer.getCountLocked(mWhich);
-                        if (handle == BatteryStats.Uid.Sensor.GPS) {
-                            timeGps += totalTime;
-                            countGps += count;
-                        } else {
-                            timeOther += totalTime;
-                            countOther += count;
-                        }
-                    }
-                }
-            }
-            
-            if (timeGps > 0) {
-                mGpsUsage.add(new SensorUsage(uid, timeGps, countGps, uSecNow));
-            }
-            if (timeOther > 0) {
-                mSensorUsage.add(new SensorUsage(uid, timeOther, countOther, uSecNow));
-            }
-        }
-        
-        Collections.sort(mGpsUsage);
-        Collections.sort(mSensorUsage);
-    }
-    
-    private void processWakelockUsage() {
-        mWakelockUsage.clear();
-        
-        long uSecTime = SystemClock.elapsedRealtime() * 1000;
-        final long uSecNow = mStats.computeBatteryRealtime(uSecTime, mWhich) / 1000;
-        
-        SparseArray<? extends Uid> uidStats = mStats.getUidStats();
-        final int NU = uidStats.size();
-        for (int iu = 0; iu < NU; iu++) {
-            Uid u = uidStats.valueAt(iu);
-            int uid = u.getUid();
-            
-            Map<String, ? extends BatteryStats.Uid.Wakelock> wakelockStats = u.getWakelockStats();
-            long time = 0;
-            int count = 0;
-            if (wakelockStats.size() > 0) {
-                for (Map.Entry<String, ? extends BatteryStats.Uid.Wakelock> ent
-                        : wakelockStats.entrySet()) {
-
-                    Uid.Wakelock wl = ent.getValue();
-                    Timer timer = wl.getWakeTime(BatteryStats.WAKE_TYPE_PARTIAL);
-                    if (timer != null) {
-                        // Convert from microseconds to milliseconds with rounding
-                        time += (timer.getTotalTimeLocked(uSecNow, mWhich) + 500) / 1000;
-                        count += timer.getCountLocked(mWhich);
-                    }
-                }
-            }
-            
-            if (time > 0) {
-                mWakelockUsage.add(new WakelockUsage(uid, time, count, uSecNow));
-            }
-        }
-        
-        Collections.sort(mWakelockUsage);
-    }
-    
-    private final StringBuilder mFormatBuilder = new StringBuilder(8);
-    private final Formatter mFormatter = new Formatter(mFormatBuilder);
-    
-    private final String formatRatio(long num, long den) {
-        if (den == 0L) {
-            return "---%";
-        }
-        float perc = ((float)num) / ((float)den) * 100;
-        mFormatBuilder.setLength(0);
-        mFormatter.format("%.1f%%", perc);
-        return mFormatBuilder.toString();
-    }
-    
-    private void processMiscUsage() {
-        mMiscUsage.clear();
-        
-        long rawRealtime = SystemClock.elapsedRealtime() * 1000;
-        final long batteryRealtime = mStats.getBatteryRealtime(rawRealtime);
-        final long whichRealtime = mStats.computeBatteryRealtime(rawRealtime, mWhich) / 1000;
-        
-        long time = mStats.computeBatteryUptime(SystemClock.uptimeMillis() * 1000, mWhich) / 1000;
-        if (time > 0) {
-            mMiscUsage.add(new MiscUsage(getString(
-                    R.string.battery_history_awake_label)
-                    + " (" + formatRatio(time, whichRealtime) + ")",
-                    R.string.battery_history_awake,
-                    time, whichRealtime)); 
-        }
-        
-        time = mStats.getScreenOnTime(batteryRealtime, mWhich) / 1000;
-        if (time > 0) {
-            mMiscUsage.add(new MiscUsage(getString(
-                    R.string.battery_history_screen_on_label)
-                    + " (" + formatRatio(time, whichRealtime) + ")",
-                    R.string.battery_history_screen_on,
-                    time, whichRealtime)); 
-        }
-        
-        time = mStats.getPhoneOnTime(batteryRealtime, mWhich) / 1000;
-        if (time > 0) {
-            mMiscUsage.add(new MiscUsage(getString(
-                    R.string.battery_history_phone_on_label)
-                    + " (" + formatRatio(time, whichRealtime) + ")",
-                    R.string.battery_history_phone_on,
-                    time, whichRealtime)); 
-        }
-        
-        time = mStats.getWifiOnTime(batteryRealtime, mWhich) / 1000;
-        if (time > 0) {
-            mMiscUsage.add(new MiscUsage("Wifi On ("
-                    + formatRatio(time, whichRealtime) + ")",
-                    "Time spent with Wifi on:",
-                    time, whichRealtime)); 
-        }
-        
-        time = mStats.getWifiRunningTime(batteryRealtime, mWhich) / 1000;
-        if (time > 0) {
-            mMiscUsage.add(new MiscUsage("Wifi Running ("
-                    + formatRatio(time, whichRealtime) + ")",
-                    "Time spent with Wifi running:",
-                    time, whichRealtime)); 
-        }
-        
-        time = mStats.getBluetoothOnTime(batteryRealtime, mWhich) / 1000;
-        if (time > 0) {
-            mMiscUsage.add(new MiscUsage("Bluetooth On ("
-                    + formatRatio(time, whichRealtime) + ")",
-                    "Time spent with Bluetooth on:",
-                    time, whichRealtime)); 
-        }
-        
-        Collections.sort(mMiscUsage);
-    }
-    
-    private void collectStatistics() {
-        if (mType == CPU_USAGE) {
-            if (!mHaveCpuUsage) {
-                mHaveCpuUsage = true;
-                processCpuUsage();
-            }
-        }
-        if (mType == NETWORK_USAGE) {
-            if (!mHaveNetworkUsage) {
-                mHaveNetworkUsage = true;
-                processNetworkUsage();
-            }
-        }
-        if (mType == GPS_USAGE || mType == SENSOR_USAGE) {
-            if (!mHaveSensorUsage) {
-                mHaveSensorUsage = true;
-                processSensorUsage();
-            }
-        }
-        if (mType == WAKELOCK_USAGE) {
-            if (!mHaveWakelockUsage) {
-                mHaveWakelockUsage = true;
-                processWakelockUsage();
-            }
-        }
-        if (mType == MISC_USAGE) {
-            if (!mHaveMiscUsage) {
-                mHaveMiscUsage = true;
-                processMiscUsage();
-            }
-        }
-    }
-    
-    private void load() {
-        try {
-            byte[] data = mBatteryInfo.getStatistics();
-            Parcel parcel = Parcel.obtain();
-            //Log.i(TAG, "Got data: " + data.length + " bytes");
-            parcel.unmarshall(data, 0, data.length);
-            parcel.setDataPosition(0);
-            mStats = com.android.internal.os.BatteryStatsImpl.CREATOR
-                    .createFromParcel(parcel);
-            //Log.i(TAG, "RECEIVED BATTERY INFO:");
-            //mStats.dumpLocked(new LogPrinter(Log.INFO, TAG));
-            
-            mHaveCpuUsage =  mHaveNetworkUsage =  mHaveSensorUsage
-                    = mHaveWakelockUsage = mHaveMiscUsage = false;
-        } catch (RemoteException e) {
-            Log.e(TAG, "RemoteException:", e);
-        }
-    }
-    
-    public void onClick(View v) {
-        if (v == mDetailsBackButton) {
-            hideDetails();
-            return;
-        }
-        
-        int id = ((Integer) v.getTag()).intValue();
-        showDetails(id);
-    }
-    
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        if (keyCode == KeyEvent.KEYCODE_BACK && mDetailsShown) {
-            hideDetails();
-            return true;
-        }
-        return super.onKeyDown(keyCode, event);
-    }
-
-    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-        int oldWhich = mWhich;
-        
-        if (parent.equals(mTypeSpinner)) {
-            mType = position;
-        } else if (parent.equals(mWhichSpinner)) {
-            switch (position) {
-                case UNPLUGGED:
-                    mWhich = BatteryStats.STATS_UNPLUGGED;
-                    break;
-                case CURRENT:
-                    mWhich = BatteryStats.STATS_CURRENT;
-                    break;
-                case TOTAL:
-                    mWhich = BatteryStats.STATS_TOTAL;
-                    break;
-            }
-        }
-        
-        if (oldWhich != mWhich) {
-            mHaveCpuUsage =  mHaveNetworkUsage =  mHaveSensorUsage
-                    = mHaveWakelockUsage = mHaveMiscUsage = false;
-        }
-        
-        displayGraph();
-    }
-
-    public void onNothingSelected(AdapterView<?> parent) {
-        // Do nothing
-    }
-    
-    @Override
-    public Object onRetainNonConfigurationInstance() {
-        BatteryStats stats = mStats;
-        mStats = null;
-        return stats;
-    }
-
-    @Override
-    protected void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-        if (mStats != null) {
-            outState.putParcelable("stats", mStats);
-        }
-        outState.putInt("type", mType);
-        outState.putInt("which", mWhich);
-    }
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-        Log.i(TAG, "onCreate");
-        
-        setContentView(R.layout.battery_history);
-        
-        mStats = (BatteryStats)getLastNonConfigurationInstance();
-        if (icicle != null) {
-            if (mStats == null) {
-                mStats = (BatteryStats)icicle.getParcelable("stats");
-            }
-            mType = icicle.getInt("type");
-            mWhich = icicle.getInt("which");
-        }
-        
-        mGraphLayout = (LinearLayout) findViewById(R.id.graphLayout);
-        mTextLayout = (LinearLayout) findViewById(R.id.textLayout);
-        mDetailsText = (TextView) findViewById(R.id.detailsText);
-        mMessageText = (TextView) findViewById(R.id.messageText);
-        
-        mTypeSpinner = (Spinner) findViewById(R.id.typeSpinner);
-        mTypeSpinner.setSelection(mType);
-        mTypeSpinner.setOnItemSelectedListener(this);
-        
-        mWhichSpinner = (Spinner) findViewById(R.id.whichSpinner);
-        mWhichSpinner.setOnItemSelectedListener(this);
-        mWhichSpinner.setEnabled(true);
-        
-        mButtons = new GraphableButton[8];
-        mButtons[0] = (GraphableButton) findViewById(R.id.button0);
-        mButtons[1] = (GraphableButton) findViewById(R.id.button1);
-        mButtons[2] = (GraphableButton) findViewById(R.id.button2);
-        mButtons[3] = (GraphableButton) findViewById(R.id.button3);
-        mButtons[4] = (GraphableButton) findViewById(R.id.button4);
-        mButtons[5] = (GraphableButton) findViewById(R.id.button5);
-        mButtons[6] = (GraphableButton) findViewById(R.id.button6);
-        mButtons[7] = (GraphableButton) findViewById(R.id.button7);
-        
-        for (int i = 0; i < mButtons.length; i++) {
-            mButtons[i].setTag(i);
-            mButtons[i].setOnClickListener(this);
-        }
-        
-        mBatteryInfo = IBatteryStats.Stub.asInterface(
-                ServiceManager.getService("batteryinfo"));
-        
-        if (mStats == null) {
-            load();
-        }
-        displayGraph();
-    }
-}
diff --git a/src/com/android/settings/battery_history/GraphableButton.java b/src/com/android/settings/battery_history/GraphableButton.java
deleted file mode 100644
index fb90a0d..0000000
--- a/src/com/android/settings/battery_history/GraphableButton.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.android.settings.battery_history;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.widget.Button;
-
-public class GraphableButton extends Button {
-    private static final String TAG = "GraphableButton";
-
-    static Paint[] sPaint = new Paint[2];
-    static {
-        sPaint[0] = new Paint();
-        sPaint[0].setStyle(Paint.Style.FILL);
-        sPaint[0].setColor(0xFF0080FF);
-        
-        sPaint[1] = new Paint();
-        sPaint[1].setStyle(Paint.Style.FILL);
-        sPaint[1].setColor(0xFFFF6060);
-    }
-    
-    double[] mValues;
-    
-    public GraphableButton(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-    
-    public void setValues(double[] values, double maxValue) {
-        mValues = values.clone();
-        for (int i = 0; i < values.length; i++) {
-            mValues[i] /= maxValue;
-        }
-    }
-    
-    @Override
-    public void onDraw(Canvas canvas) {
-        Log.i(TAG, "onDraw: w = " + getWidth() + ", h = " + getHeight());
-        
-        int xmin = getPaddingLeft();
-        int xmax = getWidth() - getPaddingRight();
-        int ymin = getPaddingTop();
-        int ymax = getHeight() - getPaddingBottom();
-        
-        int startx = xmin;
-        for (int i = 0; i < mValues.length; i++) {
-            int endx = xmin + (int) (mValues[i] * (xmax - xmin));
-            canvas.drawRect(startx, ymin, endx, ymax, sPaint[i]);
-            startx = endx;
-        }
-        super.onDraw(canvas);
-    }
-}
diff --git a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
index eec0ad8..37e48ff 100644
--- a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
@@ -144,7 +144,7 @@
     private void persistDiscoverableEndTimestamp(long endTimestamp) {
         SharedPreferences.Editor editor = mLocalManager.getSharedPreferences().edit();
         editor.putLong(SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP, endTimestamp);
-        editor.commit();
+        editor.apply();
     }
 
     private void handleModeChanged(int mode) {
diff --git a/src/com/android/settings/bluetooth/BluetoothEventRedirector.java b/src/com/android/settings/bluetooth/BluetoothEventRedirector.java
index dbdf6c1..4d124b3 100644
--- a/src/com/android/settings/bluetooth/BluetoothEventRedirector.java
+++ b/src/com/android/settings/bluetooth/BluetoothEventRedirector.java
@@ -83,7 +83,7 @@
                 if (bondState == BluetoothDevice.BOND_NONE) {
                     if (device.isBluetoothDock()) {
                         // After a dock is unpaired, we will forget the
-                        // setttings
+                        // settings
                         mManager.removeDockAutoConnectSetting(device.getAddress());
 
                         // if the device is undocked, remove it from the list as
@@ -199,6 +199,6 @@
         SharedPreferences.Editor editor = mManager.getSharedPreferences().edit();
         editor.putLong(LocalBluetoothManager.SHARED_PREFERENCES_KEY_DISCOVERING_TIMESTAMP,
                 System.currentTimeMillis());
-        editor.commit();
+        editor.apply();
     }
 }
diff --git a/src/com/android/settings/bluetooth/BluetoothNamePreference.java b/src/com/android/settings/bluetooth/BluetoothNamePreference.java
index 7a9a0c1..c99ab4c 100644
--- a/src/com/android/settings/bluetooth/BluetoothNamePreference.java
+++ b/src/com/android/settings/bluetooth/BluetoothNamePreference.java
@@ -27,8 +27,8 @@
 import android.preference.EditTextPreference;
 import android.text.Editable;
 import android.text.InputFilter;
+import android.text.Spanned;
 import android.text.TextWatcher;
-import android.text.InputFilter.LengthFilter;
 import android.util.AttributeSet;
 import android.widget.Button;
 import android.widget.EditText;
@@ -40,8 +40,7 @@
  */
 public class BluetoothNamePreference extends EditTextPreference implements TextWatcher {
     private static final String TAG = "BluetoothNamePreference";
-    // TODO(): Investigate bluetoothd/dbus crash when length is set to 248, limit as per spec.
-    private static final int BLUETOOTH_NAME_MAX_LENGTH = 200;
+    private static final int BLUETOOTH_NAME_MAX_LENGTH_BYTES = 248;
 
     private LocalBluetoothManager mLocalManager;
 
@@ -75,8 +74,11 @@
 
         // Make sure the OK button is disabled (if necessary) after rotation
         EditText et = getEditText();
-        et.setFilters(new InputFilter[] {new LengthFilter(BLUETOOTH_NAME_MAX_LENGTH)});
         if (et != null) {
+            et.setFilters(new InputFilter[] {
+                    new Utf8ByteLengthFilter(BLUETOOTH_NAME_MAX_LENGTH_BYTES)
+            });
+
             et.addTextChangedListener(this);
             Dialog d = getDialog();
             if (d instanceof AlertDialog) {
@@ -136,4 +138,68 @@
     public void onTextChanged(CharSequence s, int start, int before, int count) {
         // not used
     }
+
+    /**
+     * This filter will constrain edits so that the text length is not
+     * greater than the specified number of bytes using UTF-8 encoding.
+     * <p>The JNI method used by {@link android.server.BluetoothService}
+     * to convert UTF-16 to UTF-8 doesn't support surrogate pairs,
+     * therefore code points outside of the basic multilingual plane
+     * (0000-FFFF) will be encoded as a pair of 3-byte UTF-8 characters,
+     * rather than a single 4-byte UTF-8 encoding. Dalvik implements this
+     * conversion in {@code convertUtf16ToUtf8()} in
+     * {@code dalvik/vm/UtfString.c}.
+     * <p>This JNI method is unlikely to change in the future due to
+     * backwards compatibility requirements. It's also unclear whether
+     * the installed base of Bluetooth devices would correctly handle the
+     * encoding of surrogate pairs in UTF-8 as 4 bytes rather than 6.
+     * However, this filter will still work in scenarios where surrogate
+     * pairs are encoded as 4 bytes, with the caveat that the maximum
+     * length will be constrained more conservatively than necessary.
+     */
+    public static class Utf8ByteLengthFilter implements InputFilter {
+        private int mMaxBytes;
+
+        public Utf8ByteLengthFilter(int maxBytes) {
+            mMaxBytes = maxBytes;
+        }
+
+        public CharSequence filter(CharSequence source, int start, int end,
+                                   Spanned dest, int dstart, int dend) {
+            int srcByteCount = 0;
+            // count UTF-8 bytes in source substring
+            for (int i = start; i < end; i++) {
+                char c = source.charAt(i);
+                srcByteCount += (c < 0x0080) ? 1 : (c < 0x0800 ? 2 : 3);
+            }
+            int destLen = dest.length();
+            int destByteCount = 0;
+            // count UTF-8 bytes in destination excluding replaced section
+            for (int i = 0; i < destLen; i++) {
+                if (i < dstart || i >= dend) {
+                    char c = dest.charAt(i);
+                    destByteCount += (c < 0x0080) ? 1 : (c < 0x0800 ? 2 : 3);
+                }
+            }
+            int keepBytes = mMaxBytes - destByteCount;
+            if (keepBytes <= 0) {
+                return "";
+            } else if (keepBytes >= srcByteCount) {
+                return null; // use original dest string
+            } else {
+                // find end position of largest sequence that fits in keepBytes
+                for (int i = start; i < end; i++) {
+                    char c = source.charAt(i);
+                    keepBytes -= (c < 0x0080) ? 1 : (c < 0x0800 ? 2 : 3);
+                    if (keepBytes < 0) {
+                        return source.subSequence(start, i);
+                    }
+                }
+                // If the entire substring fits, we should have returned null
+                // above, so this line should not be reached. If for some
+                // reason it is, return null to use the original dest string.
+                return null;
+            }
+        }
+    }
 }
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDialog.java b/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
index 7004ba0..acbb99c 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
@@ -114,6 +114,8 @@
             }
             mPasskey = String.format("%06d", passkey);
             createDisplayPasskeyDialog();
+        } else if (mType == BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT) {
+            createConsentDialog();
         } else {
             Log.e(TAG, "Incorrect pairing type received, not showing any dialog");
         }
@@ -171,6 +173,9 @@
         } else if (mType == BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY) {
             mPairingView.setVisibility(View.GONE);
             messageView.setText(getString(R.string.bluetooth_display_passkey_msg, name, mPasskey));
+        } else if (mType == BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT) {
+            mPairingView.setVisibility(View.GONE);
+            messageView.setText(getString(R.string.bluetooth_incoming_pairing_msg, name));
         } else {
             Log.e(TAG, "Incorrect pairing type received, not creating view");
         }
@@ -247,6 +252,8 @@
             mDevice.setPairingConfirmation(true);
         } else if (mType == BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY) {
             // Do Nothing.
+        } else if (mType == BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT) {
+            mDevice.setRemoteOutOfBandData();
         } else {
             Log.e(TAG, "Incorrect pairing type received");
         }
diff --git a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
index 253bf02..26bb4e8 100644
--- a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
+++ b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
@@ -35,11 +35,7 @@
 import com.android.settings.R;
 import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
 
-import java.text.DateFormat;
 import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
@@ -92,219 +88,41 @@
     // See mConnectAttempted
     private static final long MAX_UUID_DELAY_FOR_AUTO_CONNECT = 5000;
 
-    // Max time to hold the work queue if we don't get or missed a response
-    // from the bt framework.
-    private static final long MAX_WAIT_TIME_FOR_FRAMEWORK = 25 * 1000;
-
-    private enum BluetoothCommand {
-        CONNECT, DISCONNECT, REMOVE_BOND,
-    }
-
-    static class BluetoothJob {
-        final BluetoothCommand command; // CONNECT, DISCONNECT
-        final CachedBluetoothDevice cachedDevice;
-        final Profile profile; // HEADSET, A2DP, etc
-        // 0 means this command was not been sent to the bt framework.
-        long timeSent;
-
-        public BluetoothJob(BluetoothCommand command,
-                CachedBluetoothDevice cachedDevice, Profile profile) {
-            this.command = command;
-            this.cachedDevice = cachedDevice;
-            this.profile = profile;
-            this.timeSent = 0;
-        }
-
-        @Override
-        public String toString() {
-            StringBuilder sb = new StringBuilder();
-            sb.append(command.name());
-            sb.append(" Address:").append(cachedDevice.mDevice);
-            if (profile != null) {
-                sb.append(" Profile:").append(profile.name());
-            }
-            sb.append(" TimeSent:");
-            if (timeSent == 0) {
-                sb.append("not yet");
-            } else {
-                sb.append(DateFormat.getTimeInstance().format(new Date(timeSent)));
-            }
-            return sb.toString();
-        }
-    }
+    /** Auto-connect after pairing only if locally initiated. */
+    private boolean mConnectAfterPairing;
 
     /**
-     * We want to serialize connect and disconnect calls. http://b/170538
-     * This are some headsets that may have L2CAP resource limitation. We want
-     * to limit the bt bandwidth usage.
+     * Describes the current device and profile for logging.
      *
-     * A queue to keep track of asynchronous calls to the bt framework.  The
-     * first item, if exist, should be in progress i.e. went to the bt framework
-     * already, waiting for a notification to come back. The second item and
-     * beyond have not been sent to the bt framework yet.
+     * @param profile Profile to describe
+     * @return Description of the device and profile
      */
-    private static LinkedList<BluetoothJob> workQueue = new LinkedList<BluetoothJob>();
-
-    private void queueCommand(BluetoothJob job) {
-        synchronized (workQueue) {
-            if (D) {
-                Log.d(TAG, workQueue.toString());
-            }
-            boolean processNow = pruneQueue(job);
-
-            // Add job to queue
-            if (D) {
-                Log.d(TAG, "Adding: " + job.toString());
-            }
-            workQueue.add(job);
-
-            // if there's nothing pending from before, send the command to bt
-            // framework immediately.
-            if (workQueue.size() == 1 || processNow) {
-                // If the failed to process, just drop it from the queue.
-                // There will be no callback to remove this from the queue.
-                processCommands();
-            }
+    private String describe(CachedBluetoothDevice cachedDevice, Profile profile) {
+        StringBuilder sb = new StringBuilder();
+        sb.append("Address:").append(cachedDevice.mDevice);
+        if (profile != null) {
+            sb.append(" Profile:").append(profile.name());
         }
+
+        return sb.toString();
     }
 
-    private boolean pruneQueue(BluetoothJob job) {
-        boolean removedStaleItems = false;
-        long now = System.currentTimeMillis();
-        Iterator<BluetoothJob> it = workQueue.iterator();
-        while (it.hasNext()) {
-            BluetoothJob existingJob = it.next();
-
-            // Remove any pending CONNECTS when we receive a DISCONNECT
-            if (job != null && job.command == BluetoothCommand.DISCONNECT) {
-                if (existingJob.timeSent == 0
-                        && existingJob.command == BluetoothCommand.CONNECT
-                        && existingJob.cachedDevice.mDevice.equals(job.cachedDevice.mDevice)
-                        && existingJob.profile == job.profile) {
-                    if (D) {
-                        Log.d(TAG, "Removed because of a pending disconnect. " + existingJob);
-                    }
-                    it.remove();
-                    continue;
-                }
-            }
-
-            // Defensive Code: Remove any job that older than a preset time.
-            // We never got a call back. It is better to have overlapping
-            // calls than to get stuck.
-            if (existingJob.timeSent != 0
-                    && (now - existingJob.timeSent) >= MAX_WAIT_TIME_FOR_FRAMEWORK) {
-                Log.w(TAG, "Timeout. Removing Job:" + existingJob.toString());
-                it.remove();
-                removedStaleItems = true;
-                continue;
-            }
-        }
-        return removedStaleItems;
-    }
-
-    private boolean processCommand(BluetoothJob job) {
-        boolean successful = false;
-        if (job.timeSent == 0) {
-            job.timeSent = System.currentTimeMillis();
-            switch (job.command) {
-            case CONNECT:
-                successful = connectInt(job.cachedDevice, job.profile);
-                break;
-            case DISCONNECT:
-                successful = disconnectInt(job.cachedDevice, job.profile);
-                break;
-            case REMOVE_BOND:
-                BluetoothDevice dev = job.cachedDevice.getDevice();
-                if (dev != null) {
-                    successful = dev.removeBond();
-                }
-                break;
-            }
-
-            if (successful) {
-                if (D) {
-                    Log.d(TAG, "Command sent successfully:" + job.toString());
-                }
-            } else if (V) {
-                Log.v(TAG, "Framework rejected command immediately:" + job.toString());
-            }
-        } else if (D) {
-            Log.d(TAG, "Job already has a sent time. Skip. " + job.toString());
-        }
-
-        return successful;
+    private String describe(Profile profile) {
+        return describe(this, profile);
     }
 
     public void onProfileStateChanged(Profile profile, int newProfileState) {
-        synchronized (workQueue) {
-            if (D) {
-                Log.d(TAG, "onProfileStateChanged:" + workQueue.toString());
-            }
-
-            int newState = LocalBluetoothProfileManager.getProfileManager(mLocalManager,
-                    profile).convertState(newProfileState);
-
-            if (newState == SettingsBtStatus.CONNECTION_STATUS_CONNECTED) {
-                if (!mProfiles.contains(profile)) {
-                    mProfiles.add(profile);
-                }
-            }
-
-            /* Ignore the transient states e.g. connecting, disconnecting */
-            if (newState == SettingsBtStatus.CONNECTION_STATUS_CONNECTED ||
-                    newState == SettingsBtStatus.CONNECTION_STATUS_DISCONNECTED) {
-                BluetoothJob job = workQueue.peek();
-                if (job == null) {
-                    return;
-                } else if (!job.cachedDevice.mDevice.equals(mDevice)) {
-                    // This can happen in 2 cases: 1) BT device initiated pairing and
-                    // 2) disconnects of one headset that's triggered by connects of
-                    // another.
-                    if (D) {
-                        Log.d(TAG, "mDevice:" + mDevice + " != head:" + job.toString());
-                    }
-
-                    // Check to see if we need to remove the stale items from the queue
-                    if (!pruneQueue(null)) {
-                        // nothing in the queue was modify. Just ignore the notification and return.
-                        return;
-                    }
-                } else {
-                    // Remove the first item and process the next one
-                    workQueue.poll();
-                }
-
-                processCommands();
-            }
-        }
-    }
-
-    /*
-     * This method is called in 2 places:
-     * 1) queryCommand() - when someone or something want to connect or
-     *    disconnect
-     * 2) onProfileStateChanged() - when the framework sends an intent
-     *    notification when it finishes processing a command
-     */
-    private void processCommands() {
         if (D) {
-            Log.d(TAG, "processCommands:" + workQueue.toString());
+            Log.d(TAG, "onProfileStateChanged: profile " + profile.toString() +
+                    " newProfileState " + newProfileState);
         }
-        Iterator<BluetoothJob> it = workQueue.iterator();
-        while (it.hasNext()) {
-            BluetoothJob job = it.next();
-            if (processCommand(job)) {
-                // Sent to bt framework. Done for now. Will remove this job
-                // from queue when we get an event
-                return;
-            } else {
-                /*
-                 * If the command failed immediately, there will be no event
-                 * callbacks. So delete the job immediately and move on to the
-                 * next one
-                 */
-                it.remove();
+
+        int newState = LocalBluetoothProfileManager.getProfileManager(mLocalManager,
+                profile).convertState(newProfileState);
+
+        if (newState == SettingsBtStatus.CONNECTION_STATUS_CONNECTED) {
+            if (!mProfiles.contains(profile)) {
+                mProfiles.add(profile);
             }
         }
     }
@@ -340,17 +158,18 @@
     }
 
     public void disconnect(Profile profile) {
-        queueCommand(new BluetoothJob(BluetoothCommand.DISCONNECT, this, profile));
+        disconnectInt(this, profile);
     }
 
     private boolean disconnectInt(CachedBluetoothDevice cachedDevice, Profile profile) {
         LocalBluetoothProfileManager profileManager =
                 LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile);
         int status = profileManager.getConnectionStatus(cachedDevice.mDevice);
-        if (SettingsBtStatus.isConnectionStatusConnected(status)) {
-            if (profileManager.disconnect(cachedDevice.mDevice)) {
-                return true;
+        if (profileManager.disconnect(cachedDevice.mDevice)) {
+            if (D) {
+                Log.d(TAG, "Command sent successfully:DISCONNECT " + describe(profile));
             }
+            return true;
         }
         return false;
     }
@@ -411,9 +230,9 @@
     }
 
     /*package*/ void onBondingDockConnect() {
-        // Don't connect just set the timer.
-        // TODO(): Fix the actual problem
-        mConnectAttempted = SystemClock.elapsedRealtime();
+        // Attempt to connect if UUIDs are available. Otherwise,
+        // we will connect when the ACTION_UUID intent arrives.
+        connect();
     }
 
     private void connectWithoutResettingTimer() {
@@ -437,8 +256,8 @@
                         .getProfileManager(mLocalManager, profile);
                 if (profileManager.isPreferred(mDevice)) {
                     ++preferredProfiles;
-                    disconnectConnected(profile);
-                    queueCommand(new BluetoothJob(BluetoothCommand.CONNECT, this, profile));
+                    disconnectConnected(this, profile);
+                    connectInt(this, profile);
                 }
             }
         }
@@ -460,8 +279,8 @@
                 LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
                         .getProfileManager(mLocalManager, profile);
                 profileManager.setPreferred(mDevice, false);
-                disconnectConnected(profile);
-                queueCommand(new BluetoothJob(BluetoothCommand.CONNECT, this, profile));
+                disconnectConnected(this, profile);
+                connectInt(this, profile);
             }
         }
     }
@@ -470,20 +289,21 @@
         mConnectAttempted = SystemClock.elapsedRealtime();
         // Reset the only-show-one-error-dialog tracking variable
         mIsConnectingErrorPossible = true;
-        disconnectConnected(profile);
-        queueCommand(new BluetoothJob(BluetoothCommand.CONNECT, this, profile));
+        disconnectConnected(this, profile);
+        connectInt(this, profile);
     }
 
-    private void disconnectConnected(Profile profile) {
+    private void disconnectConnected(CachedBluetoothDevice device, Profile profile) {
         LocalBluetoothProfileManager profileManager =
             LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile);
         CachedBluetoothDeviceManager cachedDeviceManager = mLocalManager.getCachedDeviceManager();
         Set<BluetoothDevice> devices = profileManager.getConnectedDevices();
         if (devices == null) return;
-        for (BluetoothDevice device : devices) {
-            CachedBluetoothDevice cachedDevice = cachedDeviceManager.findDevice(device);
-            if (cachedDevice != null) {
-                queueCommand(new BluetoothJob(BluetoothCommand.DISCONNECT, cachedDevice, profile));
+        for (BluetoothDevice btDevice : devices) {
+            CachedBluetoothDevice cachedDevice = cachedDeviceManager.findDevice(btDevice);
+
+            if (cachedDevice != null && !cachedDevice.equals(device)) {
+                disconnectInt(cachedDevice, profile);
             }
         }
     }
@@ -494,14 +314,14 @@
         LocalBluetoothProfileManager profileManager =
                 LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile);
         int status = profileManager.getConnectionStatus(cachedDevice.mDevice);
-        if (!SettingsBtStatus.isConnectionStatusConnected(status)) {
-            if (profileManager.connect(cachedDevice.mDevice)) {
-                return true;
+        if (profileManager.connect(cachedDevice.mDevice)) {
+            if (D) {
+                Log.d(TAG, "Command sent successfully:CONNECT " + describe(profile));
             }
-            Log.i(TAG, "Failed to connect " + profile.toString() + " to " + cachedDevice.mName);
-        } else {
-            Log.i(TAG, "Already connected");
+            return true;
         }
+        Log.i(TAG, "Failed to connect " + profile.toString() + " to " + cachedDevice.mName);
+
         return false;
     }
 
@@ -533,7 +353,10 @@
         if (!mDevice.createBond()) {
             mLocalManager.showError(mDevice, R.string.bluetooth_error_title,
                     R.string.bluetooth_pairing_error_message);
+            return;
         }
+
+        mConnectAfterPairing = true;  // auto-connect after pairing
     }
 
     public void unpair() {
@@ -546,7 +369,18 @@
         }
 
         if (state != BluetoothDevice.BOND_NONE) {
-            queueCommand(new BluetoothJob(BluetoothCommand.REMOVE_BOND, this, null));
+            final BluetoothDevice dev = getDevice();
+            if (dev != null) {
+                final boolean successful = dev.removeBond();
+                if (successful) {
+                    if (D) {
+                        Log.d(TAG, "Command sent successfully:REMOVE_BOND " + describe(null));
+                    }
+                } else if (V) {
+                    Log.v(TAG, "Framework rejected command immediately:REMOVE_BOND " +
+                            describe(null));
+                }
+            }
         }
     }
 
@@ -768,33 +602,19 @@
     public void onBondingStateChanged(int bondState) {
         if (bondState == BluetoothDevice.BOND_NONE) {
             mProfiles.clear();
-
-            BluetoothJob job = workQueue.peek();
-            if (job != null) {
-                // Remove the first item and process the next one
-                if (job.command == BluetoothCommand.REMOVE_BOND
-                        && job.cachedDevice.mDevice.equals(mDevice)) {
-                    workQueue.poll(); // dequeue
-                } else {
-                    // Unexpected job
-                    if (D) {
-                        Log.d(TAG, "job.command = " + job.command);
-                        Log.d(TAG, "mDevice:" + mDevice + " != head:" + job.toString());
-                    }
-
-                    // Check to see if we need to remove the stale items from the queue
-                    if (!pruneQueue(null)) {
-                        // nothing in the queue was modify. Just ignore the notification and return.
-                        refresh();
-                        return;
-                    }
-                }
-
-                processCommands();
-            }
+            mConnectAfterPairing = false;  // cancel auto-connect
         }
 
         refresh();
+
+        if (bondState == BluetoothDevice.BOND_BONDED) {
+            if (mDevice.isBluetoothDock()) {
+                onBondingDockConnect();
+            } else if (mConnectAfterPairing) {
+                connect();
+            }
+            mConnectAfterPairing = false;
+        }
     }
 
     public void setBtClass(BluetoothClass btClass) {
diff --git a/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java b/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java
index 4497480..b2b1326 100644
--- a/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java
+++ b/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java
@@ -182,15 +182,6 @@
         }
 
         cachedDevice.onBondingStateChanged(bondState);
-
-        if (bondState == BluetoothDevice.BOND_BONDED) {
-            // Auto-connect after pairing
-            if (!device.isBluetoothDock()) {
-                cachedDevice.connect();
-            } else {
-                cachedDevice.onBondingDockConnect();
-            }
-        }
     }
 
     /**
diff --git a/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java b/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java
index 08534f3..ed9a974 100644
--- a/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java
+++ b/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java
@@ -72,7 +72,7 @@
         }
 
         if (device == null) {
-            Log.w(TAG, "Activity started without a remote blueototh device");
+            Log.w(TAG, "Activity started without a remote Bluetooth device");
             finish();
         }
 
@@ -179,6 +179,9 @@
     }
 
     private void onProfileCheckedStateChanged(Profile profile, boolean checked) {
+        LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
+                .getProfileManager(mManager, profile);
+        profileManager.setPreferred(mCachedDevice.getDevice(), checked);
         if (mOnlineMode) {
             if (checked) {
                 mCachedDevice.connect(profile);
@@ -186,10 +189,6 @@
                 mCachedDevice.disconnect(profile);
             }
         }
-
-        LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
-                .getProfileManager(mManager, profile);
-        profileManager.setPreferred(mCachedDevice.getDevice(), checked);
     }
 
     public void onDeviceAttributesChanged(CachedBluetoothDevice cachedDevice) {
diff --git a/src/com/android/settings/bluetooth/DockService.java b/src/com/android/settings/bluetooth/DockService.java
index f318987..280ac92 100644
--- a/src/com/android/settings/bluetooth/DockService.java
+++ b/src/com/android/settings/bluetooth/DockService.java
@@ -18,6 +18,7 @@
 
 import com.android.settings.R;
 import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
+import com.android.settings.bluetooth.LocalBluetoothProfileManager.ServiceListener;
 
 import android.app.AlertDialog;
 import android.app.Notification;
@@ -48,7 +49,7 @@
 
 public class DockService extends Service implements AlertDialog.OnMultiChoiceClickListener,
         DialogInterface.OnClickListener, DialogInterface.OnDismissListener,
-        CompoundButton.OnCheckedChangeListener {
+        CompoundButton.OnCheckedChangeListener, ServiceListener {
 
     private static final String TAG = "DockService";
 
@@ -101,6 +102,7 @@
     // Created in OnCreate()
     private volatile Looper mServiceLooper;
     private volatile ServiceHandler mServiceHandler;
+    private Runnable mRunnable;
     private DockService mContext;
     private LocalBluetoothManager mBtManager;
 
@@ -138,6 +140,8 @@
     @Override
     public void onDestroy() {
         if (DEBUG) Log.d(TAG, "onDestroy");
+        mRunnable = null;
+        LocalBluetoothProfileManager.removeServiceListener(this);
         if (mDialog != null) {
             mDialog.dismiss();
             mDialog = null;
@@ -228,8 +232,8 @@
     // This method gets messages from both onStartCommand and mServiceHandler/mServiceLooper
     private synchronized void processMessage(Message msg) {
         int msgType = msg.what;
-        int state = msg.arg1;
-        int startId = msg.arg2;
+        final int state = msg.arg1;
+        final int startId = msg.arg2;
         boolean deferFinishCall = false;
         BluetoothDevice device = null;
         if (msg.obj != null) {
@@ -271,12 +275,23 @@
                     }
 
                     mDevice = device;
-                    if (mBtManager.getDockAutoConnectSetting(device.getAddress())) {
-                        // Setting == auto connect
-                        initBtSettings(mContext, device, state, false);
-                        applyBtSettings(mDevice, startId);
+
+                    // Register first in case LocalBluetoothProfileManager
+                    // becomes ready after isManagerReady is called and it
+                    // would be too late to register a service listener.
+                    LocalBluetoothProfileManager.addServiceListener(this);
+                    if (LocalBluetoothProfileManager.isManagerReady()) {
+                        handleDocked(device, state, startId);
+                        // Not needed after all
+                        LocalBluetoothProfileManager.removeServiceListener(this);
                     } else {
-                        createDialog(mContext, mDevice, state, startId);
+                        final BluetoothDevice d = device;
+                        mRunnable = new Runnable() {
+                            public void run() {
+                                handleDocked(d, state, startId);
+                            }
+                        };
+                        deferFinishCall = true;
                     }
                 }
                 break;
@@ -703,9 +718,12 @@
                 // Checked but not connected
                 callConnect = true;
             } else if (!mCheckedItems[i]) {
-                // Unchecked but connected
-                if (DEBUG) Log.d(TAG, "applyBtSettings - Disconnecting");
-                cachedDevice.disconnect(mProfiles[i]);
+                // Unchecked, may or may not be connected.
+                int status = profileManager.getConnectionStatus(cachedDevice.getDevice());
+                if (SettingsBtStatus.isConnectionStatusConnected(status)) {
+                    if (DEBUG) Log.d(TAG, "applyBtSettings - Disconnecting");
+                    cachedDevice.disconnect(mProfiles[i]);
+                }
             }
             profileManager.setPreferred(device, mCheckedItems[i]);
             if (DEBUG) {
@@ -721,8 +739,21 @@
         }
     }
 
+    private synchronized void handleDocked(final BluetoothDevice device, final int state,
+            final int startId) {
+        if (mBtManager.getDockAutoConnectSetting(device.getAddress())) {
+            // Setting == auto connect
+            initBtSettings(mContext, device, state, false);
+            applyBtSettings(mDevice, startId);
+        } else {
+            createDialog(mContext, device, state, startId);
+        }
+    }
+
     private synchronized void handleUndocked(Context context, LocalBluetoothManager localManager,
             BluetoothDevice device) {
+        mRunnable = null;
+        LocalBluetoothProfileManager.removeServiceListener(this);
         if (mDialog != null) {
             mDialog.dismiss();
             mDialog = null;
@@ -760,14 +791,14 @@
         SharedPreferences.Editor editor = getSharedPreferences(SHARED_PREFERENCES_NAME,
                 Context.MODE_PRIVATE).edit();
         editor.putBoolean(key, bool);
-        editor.commit();
+        editor.apply();
     }
 
     private void setSettingInt(String key, int value) {
         SharedPreferences.Editor editor = getSharedPreferences(SHARED_PREFERENCES_NAME,
                 Context.MODE_PRIVATE).edit();
         editor.putInt(key, value);
-        editor.commit();
+        editor.apply();
     }
 
     private void removeSetting(String key) {
@@ -775,7 +806,17 @@
                 Context.MODE_PRIVATE);
         SharedPreferences.Editor editor = sharedPref.edit();
         editor.remove(key);
-        editor.commit();
-        return;
+        editor.apply();
+    }
+
+    public synchronized void onServiceConnected() {
+        if (mRunnable != null) {
+            mRunnable.run();
+            mRunnable = null;
+            LocalBluetoothProfileManager.removeServiceListener(this);
+        }
+    }
+
+    public void onServiceDisconnected() {
     }
 }
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothManager.java b/src/com/android/settings/bluetooth/LocalBluetoothManager.java
index 2ffb139..4ba06da 100644
--- a/src/com/android/settings/bluetooth/LocalBluetoothManager.java
+++ b/src/com/android/settings/bluetooth/LocalBluetoothManager.java
@@ -45,9 +45,8 @@
 
     private static final String SHARED_PREFERENCES_NAME = "bluetooth_settings";
 
+    /** Singleton instance. */
     private static LocalBluetoothManager INSTANCE;
-    /** Used when obtaining a reference to the singleton instance. */
-    private static Object INSTANCE_LOCK = new Object();
     private boolean mInitialized;
 
     private Context mContext;
@@ -86,7 +85,7 @@
     private long mLastScan;
 
     public static LocalBluetoothManager getInstance(Context context) {
-        synchronized (INSTANCE_LOCK) {
+        synchronized (LocalBluetoothManager.class) {
             if (INSTANCE == null) {
                 INSTANCE = new LocalBluetoothManager();
             }
@@ -356,7 +355,7 @@
                 deviceAddress);
         editor.putLong(LocalBluetoothManager.SHARED_PREFERENCES_KEY_LAST_SELECTED_DEVICE_TIME,
                 System.currentTimeMillis());
-        editor.commit();
+        editor.apply();
     }
 
     public boolean hasDockAutoConnectSetting(String addr) {
@@ -371,12 +370,12 @@
     public void saveDockAutoConnectSetting(String addr, boolean autoConnect) {
         SharedPreferences.Editor editor = getSharedPreferences().edit();
         editor.putBoolean(SHARED_PREFERENCES_KEY_DOCK_AUTO_CONNECT + addr, autoConnect);
-        editor.commit();
+        editor.apply();
     }
 
     public void removeDockAutoConnectSetting(String addr) {
         SharedPreferences.Editor editor = getSharedPreferences().edit();
         editor.remove(SHARED_PREFERENCES_KEY_DOCK_AUTO_CONNECT + addr);
-        editor.commit();
+        editor.apply();
     }
 }
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
index f3aaade..8d29428 100644
--- a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
+++ b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
@@ -28,6 +28,8 @@
 
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -53,6 +55,29 @@
         BluetoothUuid.ObexObjectPush
     };
 
+    /**
+     * An interface for notifying BluetoothHeadset IPC clients when they have
+     * been connected to the BluetoothHeadset service.
+     */
+    public interface ServiceListener {
+        /**
+         * Called to notify the client when this proxy object has been
+         * connected to the BluetoothHeadset service. Clients must wait for
+         * this callback before making IPC calls on the BluetoothHeadset
+         * service.
+         */
+        public void onServiceConnected();
+
+        /**
+         * Called to notify the client that this proxy object has been
+         * disconnected from the BluetoothHeadset service. Clients must not
+         * make IPC calls on the BluetoothHeadset service after this callback.
+         * This callback will currently only occur if the application hosting
+         * the BluetoothHeadset service, but may be called more often in future.
+         */
+        public void onServiceDisconnected();
+    }
+
     // TODO: close profiles when we're shutting down
     private static Map<Profile, LocalBluetoothProfileManager> sProfileMap =
             new HashMap<Profile, LocalBluetoothProfileManager>();
@@ -76,6 +101,26 @@
         }
     }
 
+    private static LinkedList<ServiceListener> mServiceListeners = new LinkedList<ServiceListener>();
+
+    public static void addServiceListener(ServiceListener l) {
+        mServiceListeners.add(l);
+    }
+
+    public static void removeServiceListener(ServiceListener l) {
+        mServiceListeners.remove(l);
+    }
+
+    public static boolean isManagerReady() {
+        // Getting just the headset profile is fine for now. Will need to deal with A2DP
+        // and others if they aren't always in a ready state.
+        LocalBluetoothProfileManager profileManager = sProfileMap.get(Profile.HEADSET);
+        if (profileManager == null) {
+            return sProfileMap.size() > 0;
+        }
+        return profileManager.isProfileReady();
+    }
+
     public static LocalBluetoothProfileManager getProfileManager(LocalBluetoothManager localManager,
             Profile profile) {
         // Note: This code assumes that "localManager" is same as the
@@ -144,6 +189,8 @@
         return SettingsBtStatus.isConnectionStatusConnected(getConnectionStatus(device));
     }
 
+    public abstract boolean isProfileReady();
+
     // TODO: int instead of enum
     public enum Profile {
         HEADSET(R.string.bluetooth_profile_headset),
@@ -247,6 +294,11 @@
                 return SettingsBtStatus.CONNECTION_STATUS_UNKNOWN;
             }
         }
+
+        @Override
+        public boolean isProfileReady() {
+            return true;
+        }
     }
 
     /**
@@ -256,6 +308,9 @@
             implements BluetoothHeadset.ServiceListener {
         private BluetoothHeadset mService;
         private Handler mUiHandler = new Handler();
+        private boolean profileReady = false;
+        private BluetoothDevice mDelayedConnectDevice = null;
+        private BluetoothDevice mDelayedDisconnectDevice = null;
 
         public HeadsetProfileManager(LocalBluetoothManager localManager) {
             super(localManager);
@@ -263,23 +318,67 @@
         }
 
         public void onServiceConnected() {
+            profileReady = true;
             // This could be called on a non-UI thread, funnel to UI thread.
-            mUiHandler.post(new Runnable() {
+            // Delay for a few seconds to allow other proxies to connect.
+            mUiHandler.postDelayed(new Runnable() {
                 public void run() {
-                    /*
-                     * We just bound to the service, so refresh the UI of the
-                     * headset device.
-                     */
                     BluetoothDevice device = mService.getCurrentHeadset();
-                    if (device == null) return;
-                    mLocalManager.getCachedDeviceManager()
+
+                    if (mDelayedConnectDevice != null) {
+                        Log.i(TAG, "service ready: connecting...");
+                        BluetoothDevice newDevice = mDelayedConnectDevice;
+                        mDelayedConnectDevice = null;
+
+                        if (!newDevice.equals(device)) {
+                            if (device != null) {
+                                Log.i(TAG, "disconnecting old headset");
+                                mService.disconnectHeadset(device);
+                            }
+                            Log.i(TAG, "connecting to pending headset");
+                            mService.connectHeadset(newDevice);
+                        }
+                    } else if (mDelayedDisconnectDevice != null) {
+                        Log.i(TAG, "service ready: disconnecting...");
+                        if (mDelayedDisconnectDevice.equals(device)) {
+                            Log.i(TAG, "disconnecting headset");
+                            mService.disconnectHeadset(device);
+                        }
+                        mDelayedDisconnectDevice = null;
+                    } else {
+                        /*
+                         * We just bound to the service, so refresh the UI of the
+                         * headset device.
+                         */
+                        if (device == null) return;
+                        mLocalManager.getCachedDeviceManager()
                             .onProfileStateChanged(device, Profile.HEADSET,
                                                    BluetoothHeadset.STATE_CONNECTED);
+                    }
                 }
-            });
+            }, 2000);  // wait 2 seconds for other proxies to connect
+
+            if (mServiceListeners.size() > 0) {
+                Iterator<ServiceListener> it = mServiceListeners.iterator();
+                while(it.hasNext()) {
+                    it.next().onServiceConnected();
+                }
+            }
         }
 
         public void onServiceDisconnected() {
+            profileReady = false;
+            if (mServiceListeners.size() > 0) {
+                Iterator<ServiceListener> it = mServiceListeners.iterator();
+                while(it.hasNext()) {
+                    it.next().onServiceDisconnected();
+                }
+            }
+        }
+
+        @Override
+        public boolean isProfileReady() {
+            return profileReady;
         }
 
         @Override
@@ -295,20 +394,44 @@
 
         @Override
         public boolean connect(BluetoothDevice device) {
+            // Delay connection until onServiceConnected() if the
+            // manager isn't ready
+            if (!isManagerReady()) {
+                Log.w(TAG, "HeadsetProfileManager delaying connect, "
+                        + "manager not ready");
+                mDelayedConnectDevice = device;
+                mDelayedDisconnectDevice = null;
+                return true;  // hopefully it will succeed
+            }
+
             // Since connectHeadset fails if already connected to a headset, we
             // disconnect from any headset first
-            mService.disconnectHeadset();
+            BluetoothDevice currDevice = mService.getCurrentHeadset();
+            if (currDevice != null) {
+                mService.disconnectHeadset(currDevice);
+            }
             return mService.connectHeadset(device);
         }
 
         @Override
         public boolean disconnect(BluetoothDevice device) {
-            if (mService.getCurrentHeadset().equals(device)) {
+            // Delay connection until onServiceConnected() if the
+            // manager isn't ready
+            if (!isManagerReady()) {
+                Log.w(TAG, "HeadsetProfileManager delaying disconnect, "
+                        + "manager not ready");
+                mDelayedConnectDevice = null;
+                mDelayedDisconnectDevice = device;
+                return true;  // hopefully it will succeed
+            }
+
+            BluetoothDevice currDevice = mService.getCurrentHeadset();
+            if (currDevice != null && currDevice.equals(device)) {
                 // Downgrade prority as user is disconnecting the headset.
                 if (mService.getPriority(device) > BluetoothHeadset.PRIORITY_ON) {
                     mService.setPriority(device, BluetoothHeadset.PRIORITY_ON);
                 }
-                return mService.disconnectHeadset();
+                return mService.disconnectHeadset(device);
             } else {
                 return false;
             }
@@ -318,7 +441,7 @@
         public int getConnectionStatus(BluetoothDevice device) {
             BluetoothDevice currentDevice = mService.getCurrentHeadset();
             return currentDevice != null && currentDevice.equals(device)
-                    ? convertState(mService.getState())
+                    ? convertState(mService.getState(device))
                     : SettingsBtStatus.CONNECTION_STATUS_DISCONNECTED;
         }
 
@@ -424,6 +547,11 @@
         }
 
         @Override
+        public boolean isProfileReady() {
+            return true;
+        }
+
+        @Override
         public int convertState(int oppState) {
             switch (oppState) {
             case 0:
diff --git a/src/com/android/settings/bluetooth/RequestPermissionActivity.java b/src/com/android/settings/bluetooth/RequestPermissionActivity.java
index eca233c..dd802f3 100644
--- a/src/com/android/settings/bluetooth/RequestPermissionActivity.java
+++ b/src/com/android/settings/bluetooth/RequestPermissionActivity.java
@@ -277,7 +277,7 @@
         editor.putLong(
                 BluetoothDiscoverableEnabler.SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP,
                 endTimestamp);
-        editor.commit();
+        editor.apply();
     }
 
     @Override
diff --git a/src/com/android/settings/bluetooth/SettingsBtStatus.java b/src/com/android/settings/bluetooth/SettingsBtStatus.java
index e2285e9..c6ec23b 100644
--- a/src/com/android/settings/bluetooth/SettingsBtStatus.java
+++ b/src/com/android/settings/bluetooth/SettingsBtStatus.java
@@ -31,7 +31,7 @@
 
     public static final int CONNECTION_STATUS_UNKNOWN = 0;
     public static final int CONNECTION_STATUS_ACTIVE = 1;
-    /** Use {@link #isConnected} to check for the connected state */
+    /** Use {@link #isConnectionStatusConnected} to check for the connected state */
     public static final int CONNECTION_STATUS_CONNECTED = 2;
     public static final int CONNECTION_STATUS_CONNECTING = 3;
     public static final int CONNECTION_STATUS_DISCONNECTED = 4;
diff --git a/src/com/android/settings/deviceinfo/Memory.java b/src/com/android/settings/deviceinfo/Memory.java
index b574849..0d00528 100644
--- a/src/com/android/settings/deviceinfo/Memory.java
+++ b/src/com/android/settings/deviceinfo/Memory.java
@@ -26,13 +26,9 @@
 import android.content.IntentFilter;
 import android.content.DialogInterface.OnCancelListener;
 import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.res.Resources;
 import android.os.Bundle;
-import android.os.Handler;
 import android.os.IBinder;
-import android.os.Message;
 import android.os.RemoteException;
 import android.os.Environment;
 import android.os.storage.IMountService;
@@ -42,6 +38,7 @@
 import android.os.storage.StorageEventListener;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
+import android.preference.PreferenceGroup;
 import android.preference.PreferenceScreen;
 import android.text.format.Formatter;
 import android.util.Log;
@@ -50,9 +47,7 @@
 import com.android.settings.R;
 
 import java.io.File;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 public class Memory extends PreferenceActivity implements OnCancelListener {
     private static final String TAG = "Memory";
@@ -66,6 +61,8 @@
 
     private static final String MEMORY_SD_FORMAT = "memory_sd_format";
 
+    private static final String MEMORY_SD_GROUP = "memory_sd";
+
     private static final int DLG_CONFIRM_UNMOUNT = 1;
     private static final int DLG_ERROR_UNMOUNT = 2;
 
@@ -75,6 +72,9 @@
     private Preference mSdAvail;
     private Preference mSdMountToggle;
     private Preference mSdFormat;
+    private PreferenceGroup mSdMountPreferenceGroup;
+
+    boolean mSdMountToggleAdded = true;
     
     // Access using getMountService()
     private IMountService mMountService = null;
@@ -97,6 +97,8 @@
         mSdAvail = findPreference(MEMORY_SD_AVAIL);
         mSdMountToggle = findPreference(MEMORY_SD_MOUNT_TOGGLE);
         mSdFormat = findPreference(MEMORY_SD_FORMAT);
+
+        mSdMountPreferenceGroup = (PreferenceGroup)findPreference(MEMORY_SD_GROUP);
     }
     
     @Override
@@ -225,7 +227,6 @@
     private boolean hasAppsAccessingStorage() throws RemoteException {
         String extStoragePath = Environment.getExternalStorageDirectory().toString();
         IMountService mountService = getMountService();
-        boolean showPidDialog = false;
         int stUsers[] = mountService.getStorageUsers(extStoragePath);
         if (stUsers != null && stUsers.length > 0) {
             return true;
@@ -275,9 +276,15 @@
             readOnly = mRes.getString(R.string.read_only);
         }
  
-        mSdFormat.setEnabled(false);
-
         if (status.equals(Environment.MEDIA_MOUNTED)) {
+            if (!Environment.isExternalStorageRemovable()) {
+                // This device has built-in storage that is not removable.
+                // There is no reason for the user to unmount it.
+                if (mSdMountToggleAdded) {
+                    mSdMountPreferenceGroup.removePreference(mSdMountToggle);
+                    mSdMountToggleAdded = false;
+                }
+            }
             try {
                 File path = Environment.getExternalStorageDirectory();
                 StatFs stat = new StatFs(path.getPath());
@@ -303,10 +310,18 @@
             mSdAvail.setSummary(mRes.getString(R.string.sd_unavailable));
 
 
+            if (!Environment.isExternalStorageRemovable()) {
+                if (status.equals(Environment.MEDIA_UNMOUNTED)) {
+                    if (!mSdMountToggleAdded) {
+                        mSdMountPreferenceGroup.addPreference(mSdMountToggle);
+                        mSdMountToggleAdded = true;
+                    }
+                }
+            }
+
             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));
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
new file mode 100644
index 0000000..23107da
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
@@ -0,0 +1,713 @@
+/*
+ * 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.fuelgauge;
+
+import com.android.settings.R;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.Typeface;
+import android.os.BatteryStats;
+import android.os.SystemClock;
+import android.os.BatteryStats.HistoryItem;
+import android.telephony.ServiceState;
+import android.text.TextPaint;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.View;
+
+public class BatteryHistoryChart extends View {
+    static final int CHART_DATA_X_MASK = 0x0000ffff;
+    static final int CHART_DATA_BIN_MASK = 0xffff0000;
+    static final int CHART_DATA_BIN_SHIFT = 16;
+
+    static class ChartData {
+        int[] mColors;
+        Paint[] mPaints;
+
+        int mNumTicks;
+        int[] mTicks;
+        int mLastBin;
+
+        void setColors(int[] colors) {
+            mColors = colors;
+            mPaints = new Paint[colors.length];
+            for (int i=0; i<colors.length; i++) {
+                mPaints[i] = new Paint();
+                mPaints[i].setColor(colors[i]);
+                mPaints[i].setStyle(Paint.Style.FILL);
+            }
+        }
+
+        void init(int width) {
+            if (width > 0) {
+                mTicks = new int[width*2];
+            } else {
+                mTicks = null;
+            }
+            mNumTicks = 0;
+            mLastBin = 0;
+        }
+
+        void addTick(int x, int bin) {
+            if (bin != mLastBin && mNumTicks < mTicks.length) {
+                mTicks[mNumTicks] = x | bin << CHART_DATA_BIN_SHIFT;
+                mNumTicks++;
+                mLastBin = bin;
+            }
+        }
+
+        void finish(int width) {
+            if (mLastBin != 0) {
+                addTick(width, 0);
+            }
+        }
+
+        void draw(Canvas canvas, int top, int height) {
+            int lastBin=0, lastX=0;
+            int bottom = top + height;
+            for (int i=0; i<mNumTicks; i++) {
+                int tick = mTicks[i];
+                int x = tick&CHART_DATA_X_MASK;
+                int bin = (tick&CHART_DATA_BIN_MASK) >> CHART_DATA_BIN_SHIFT;
+                if (lastBin != 0) {
+                    canvas.drawRect(lastX, top, x, bottom, mPaints[lastBin]);
+                }
+                lastBin = bin;
+                lastX = x;
+            }
+
+        }
+    }
+
+    static final int SANS = 1;
+    static final int SERIF = 2;
+    static final int MONOSPACE = 3;
+
+    static final int BATTERY_WARN = 29;
+    static final int BATTERY_CRITICAL = 14;
+    
+    // First value if for phone off; first value is "scanning"; following values
+    // are battery stats signal strength buckets.
+    static final int NUM_PHONE_SIGNALS = 7;
+
+    final Paint mBatteryBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+    final Paint mBatteryGoodPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+    final Paint mBatteryWarnPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+    final Paint mBatteryCriticalPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+    final Paint mChargingPaint = new Paint();
+    final Paint mScreenOnPaint = new Paint();
+    final Paint mGpsOnPaint = new Paint();
+    final Paint mWifiRunningPaint = new Paint();
+    final Paint mWakeLockPaint = new Paint();
+    final ChartData mPhoneSignalChart = new ChartData();
+    final TextPaint mTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
+    
+    final Path mBatLevelPath = new Path();
+    final Path mBatGoodPath = new Path();
+    final Path mBatWarnPath = new Path();
+    final Path mBatCriticalPath = new Path();
+    final Path mChargingPath = new Path();
+    final Path mScreenOnPath = new Path();
+    final Path mGpsOnPath = new Path();
+    final Path mWifiRunningPath = new Path();
+    final Path mWakeLockPath = new Path();
+    
+    int mFontSize;
+    
+    BatteryStats mStats;
+    long mStatsPeriod;
+    String mDurationString;
+    String mTotalDurationString;
+    String mChargingLabel;
+    String mScreenOnLabel;
+    String mGpsOnLabel;
+    String mWifiRunningLabel;
+    String mWakeLockLabel;
+    String mPhoneSignalLabel;
+    
+    int mTextAscent;
+    int mTextDescent;
+    int mDurationStringWidth;
+    int mTotalDurationStringWidth;
+
+    boolean mLargeMode;
+
+    int mLineWidth;
+    int mThinLineWidth;
+    int mChargingOffset;
+    int mScreenOnOffset;
+    int mGpsOnOffset;
+    int mWifiRunningOffset;
+    int mWakeLockOffset;
+    int mPhoneSignalOffset;
+    int mLevelOffset;
+    int mLevelTop;
+    int mLevelBottom;
+    static final int PHONE_SIGNAL_X_MASK = CHART_DATA_X_MASK;
+    static final int PHONE_SIGNAL_BIN_MASK = CHART_DATA_BIN_MASK;
+    static final int PHONE_SIGNAL_BIN_SHIFT = CHART_DATA_BIN_SHIFT;
+    
+    int mNumHist;
+    long mHistStart;
+    long mHistEnd;
+    int mBatLow;
+    int mBatHigh;
+    boolean mHaveWifi;
+    boolean mHaveGps;
+    
+    public BatteryHistoryChart(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        
+        mBatteryBackgroundPaint.setARGB(255, 128, 128, 128);
+        mBatteryBackgroundPaint.setStyle(Paint.Style.FILL);
+        mBatteryGoodPaint.setARGB(128, 0, 255, 0);
+        mBatteryGoodPaint.setStyle(Paint.Style.STROKE);
+        mBatteryWarnPaint.setARGB(128, 255, 255, 0);
+        mBatteryWarnPaint.setStyle(Paint.Style.STROKE);
+        mBatteryCriticalPaint.setARGB(192, 255, 0, 0);
+        mBatteryCriticalPaint.setStyle(Paint.Style.STROKE);
+        mChargingPaint.setARGB(255, 0, 128, 0);
+        mChargingPaint.setStyle(Paint.Style.STROKE);
+        mScreenOnPaint.setStyle(Paint.Style.STROKE);
+        mGpsOnPaint.setStyle(Paint.Style.STROKE);
+        mWifiRunningPaint.setStyle(Paint.Style.STROKE);
+        mWakeLockPaint.setStyle(Paint.Style.STROKE);
+        mPhoneSignalChart.setColors(new int[] {
+                0x00000000, 0xffa00000, 0xffa0a000, 0xff808020,
+                0xff808040, 0xff808060, 0xff008000
+        });
+        
+        mTextPaint.density = getResources().getDisplayMetrics().density;
+        mTextPaint.setCompatibilityScaling(
+                getResources().getCompatibilityInfo().applicationScale);
+        
+        TypedArray a =
+            context.obtainStyledAttributes(
+                attrs, R.styleable.BatteryHistoryChart, 0, 0);
+        
+        ColorStateList textColor = null;
+        int textSize = 15;
+        int typefaceIndex = -1;
+        int styleIndex = -1;
+        
+        TypedArray appearance = null;
+        int ap = a.getResourceId(R.styleable.BatteryHistoryChart_android_textAppearance, -1);
+        if (ap != -1) {
+            appearance = context.obtainStyledAttributes(ap,
+                                com.android.internal.R.styleable.
+                                TextAppearance);
+        }
+        if (appearance != null) {
+            int n = appearance.getIndexCount();
+            for (int i = 0; i < n; i++) {
+                int attr = appearance.getIndex(i);
+
+                switch (attr) {
+                case com.android.internal.R.styleable.TextAppearance_textColor:
+                    textColor = appearance.getColorStateList(attr);
+                    break;
+
+                case com.android.internal.R.styleable.TextAppearance_textSize:
+                    textSize = appearance.getDimensionPixelSize(attr, textSize);
+                    break;
+
+                case com.android.internal.R.styleable.TextAppearance_typeface:
+                    typefaceIndex = appearance.getInt(attr, -1);
+                    break;
+
+                case com.android.internal.R.styleable.TextAppearance_textStyle:
+                    styleIndex = appearance.getInt(attr, -1);
+                    break;
+                }
+            }
+
+            appearance.recycle();
+        }
+        
+        int shadowcolor = 0;
+        float dx=0, dy=0, r=0;
+        
+        int n = a.getIndexCount();
+        for (int i = 0; i < n; i++) {
+            int attr = a.getIndex(i);
+
+            switch (attr) {
+                case R.styleable.BatteryHistoryChart_android_shadowColor:
+                    shadowcolor = a.getInt(attr, 0);
+                    break;
+
+                case R.styleable.BatteryHistoryChart_android_shadowDx:
+                    dx = a.getFloat(attr, 0);
+                    break;
+
+                case R.styleable.BatteryHistoryChart_android_shadowDy:
+                    dy = a.getFloat(attr, 0);
+                    break;
+
+                case R.styleable.BatteryHistoryChart_android_shadowRadius:
+                    r = a.getFloat(attr, 0);
+                    break;
+
+                case R.styleable.BatteryHistoryChart_android_textColor:
+                    textColor = a.getColorStateList(attr);
+                    break;
+
+                case R.styleable.BatteryHistoryChart_android_textSize:
+                    textSize = a.getDimensionPixelSize(attr, textSize);
+                    break;
+
+                case R.styleable.BatteryHistoryChart_android_typeface:
+                    typefaceIndex = a.getInt(attr, typefaceIndex);
+                    break;
+
+                case R.styleable.BatteryHistoryChart_android_textStyle:
+                    styleIndex = a.getInt(attr, styleIndex);
+                    break;
+            }
+        }
+        
+        a.recycle();
+        
+        mTextPaint.setColor(textColor.getDefaultColor());
+        mTextPaint.setTextSize(textSize);
+        
+        Typeface tf = null;
+        switch (typefaceIndex) {
+            case SANS:
+                tf = Typeface.SANS_SERIF;
+                break;
+
+            case SERIF:
+                tf = Typeface.SERIF;
+                break;
+
+            case MONOSPACE:
+                tf = Typeface.MONOSPACE;
+                break;
+        }
+        
+        setTypeface(tf, styleIndex);
+        
+        if (shadowcolor != 0) {
+            mTextPaint.setShadowLayer(r, dx, dy, shadowcolor);
+        }
+    }
+    
+    public void setTypeface(Typeface tf, int style) {
+        if (style > 0) {
+            if (tf == null) {
+                tf = Typeface.defaultFromStyle(style);
+            } else {
+                tf = Typeface.create(tf, style);
+            }
+
+            mTextPaint.setTypeface(tf);
+            // now compute what (if any) algorithmic styling is needed
+            int typefaceStyle = tf != null ? tf.getStyle() : 0;
+            int need = style & ~typefaceStyle;
+            mTextPaint.setFakeBoldText((need & Typeface.BOLD) != 0);
+            mTextPaint.setTextSkewX((need & Typeface.ITALIC) != 0 ? -0.25f : 0);
+        } else {
+            mTextPaint.setFakeBoldText(false);
+            mTextPaint.setTextSkewX(0);
+            mTextPaint.setTypeface(tf);
+        }
+    }
+    
+    void setStats(BatteryStats stats) {
+        mStats = stats;
+        
+        long uSecTime = mStats.computeBatteryRealtime(SystemClock.elapsedRealtime() * 1000,
+                BatteryStats.STATS_SINCE_CHARGED);
+        mStatsPeriod = uSecTime;
+        String durationString = Utils.formatElapsedTime(getContext(), mStatsPeriod / 1000);
+        mDurationString = getContext().getString(R.string.battery_stats_on_battery,
+                durationString);
+        mChargingLabel = getContext().getString(R.string.battery_stats_charging_label);
+        mScreenOnLabel = getContext().getString(R.string.battery_stats_screen_on_label);
+        mGpsOnLabel = getContext().getString(R.string.battery_stats_gps_on_label);
+        mWifiRunningLabel = getContext().getString(R.string.battery_stats_wifi_running_label);
+        mWakeLockLabel = getContext().getString(R.string.battery_stats_wake_lock_label);
+        mPhoneSignalLabel = getContext().getString(R.string.battery_stats_phone_signal_label);
+        
+        int pos = 0;
+        int lastInteresting = 0;
+        byte lastLevel = -1;
+        mBatLow = 0;
+        mBatHigh = 100;
+        int aggrStates = 0;
+        boolean first = true;
+        if (stats.startIteratingHistoryLocked()) {
+            final HistoryItem rec = new HistoryItem();
+            while (stats.getNextHistoryLocked(rec)) {
+                pos++;
+                if (rec.cmd == HistoryItem.CMD_UPDATE) {
+                    if (first) {
+                        first = false;
+                        mHistStart = rec.time;
+                    }
+                    if (rec.batteryLevel != lastLevel || pos == 1) {
+                        lastLevel = rec.batteryLevel;
+                        lastInteresting = pos;
+                        mHistEnd = rec.time;
+                    }
+                    aggrStates |= rec.states;
+                }
+            }
+        }
+        mNumHist = lastInteresting;
+        mHaveGps = (aggrStates&HistoryItem.STATE_GPS_ON_FLAG) != 0;
+        mHaveWifi = (aggrStates&HistoryItem.STATE_WIFI_RUNNING_FLAG) != 0;
+        
+        if (mHistEnd <= mHistStart) mHistEnd = mHistStart+1;
+        mTotalDurationString = Utils.formatElapsedTime(getContext(), mHistEnd - mHistStart);
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        mDurationStringWidth = (int)mTextPaint.measureText(mDurationString);
+        mTotalDurationStringWidth = (int)mTextPaint.measureText(mTotalDurationString);
+        mTextAscent = (int)mTextPaint.ascent();
+        mTextDescent = (int)mTextPaint.descent();
+    }
+
+    void finishPaths(int w, int h, int levelh, int startX, int y, Path curLevelPath,
+            int lastX, boolean lastCharging, boolean lastScreenOn, boolean lastGpsOn,
+            boolean lastWifiRunning, boolean lastWakeLock, Path lastPath) {
+        if (curLevelPath != null) {
+            if (lastX >= 0 && lastX < w) {
+                if (lastPath != null) {
+                    lastPath.lineTo(w, y);
+                }
+                curLevelPath.lineTo(w, y);
+            }
+            curLevelPath.lineTo(w, mLevelTop+levelh);
+            curLevelPath.lineTo(startX, mLevelTop+levelh);
+            curLevelPath.close();
+        }
+        
+        if (lastCharging) {
+            mChargingPath.lineTo(w, h-mChargingOffset);
+        }
+        if (lastScreenOn) {
+            mScreenOnPath.lineTo(w, h-mScreenOnOffset);
+        }
+        if (lastGpsOn) {
+            mGpsOnPath.lineTo(w, h-mGpsOnOffset);
+        }
+        if (lastWifiRunning) {
+            mWifiRunningPath.lineTo(w, h-mWifiRunningOffset);
+        }
+        if (lastWakeLock) {
+            mWakeLockPath.lineTo(w, h-mWakeLockOffset);
+        }
+        mPhoneSignalChart.finish(w);
+    }
+    
+    @Override
+    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+        super.onSizeChanged(w, h, oldw, oldh);
+        
+        int textHeight = mTextDescent - mTextAscent;
+        mThinLineWidth = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
+                2, getResources().getDisplayMetrics());
+        if (h > (textHeight*6)) {
+            mLargeMode = true;
+            mLineWidth = textHeight/2;
+            mLevelTop = textHeight + mLineWidth;
+            mScreenOnPaint.setARGB(255, 32, 64, 255);
+            mGpsOnPaint.setARGB(255, 32, 64, 255);
+            mWifiRunningPaint.setARGB(255, 32, 64, 255);
+            mWakeLockPaint.setARGB(255, 32, 64, 255);
+        } else {
+            mLargeMode = false;
+            mLineWidth = mThinLineWidth;
+            mLevelTop = 0;
+            mScreenOnPaint.setARGB(255, 0, 0, 255);
+            mGpsOnPaint.setARGB(255, 0, 0, 255);
+            mWifiRunningPaint.setARGB(255, 0, 0, 255);
+            mWakeLockPaint.setARGB(255, 0, 0, 255);
+        }
+        if (mLineWidth <= 0) mLineWidth = 1;
+        mTextPaint.setStrokeWidth(mThinLineWidth);
+        mBatteryGoodPaint.setStrokeWidth(mThinLineWidth);
+        mBatteryWarnPaint.setStrokeWidth(mThinLineWidth);
+        mBatteryCriticalPaint.setStrokeWidth(mThinLineWidth);
+        mChargingPaint.setStrokeWidth(mLineWidth);
+        mScreenOnPaint.setStrokeWidth(mLineWidth);
+        mGpsOnPaint.setStrokeWidth(mLineWidth);
+        mWifiRunningPaint.setStrokeWidth(mLineWidth);
+        mWakeLockPaint.setStrokeWidth(mLineWidth);
+
+        if (mLargeMode) {
+            int barOffset = textHeight + mLineWidth;
+            mChargingOffset = mLineWidth;
+            mScreenOnOffset = mChargingOffset + barOffset;
+            mWakeLockOffset = mScreenOnOffset + barOffset;
+            mWifiRunningOffset = mWakeLockOffset + barOffset;
+            mGpsOnOffset = mWifiRunningOffset + (mHaveWifi ? barOffset : 0);
+            mPhoneSignalOffset = mGpsOnOffset + (mHaveGps ? barOffset : 0);
+            mLevelOffset = mPhoneSignalOffset + barOffset + mLineWidth;
+            mPhoneSignalChart.init(w);
+        } else {
+            mScreenOnOffset = mGpsOnOffset = mWifiRunningOffset
+                    = mWakeLockOffset = mLineWidth;
+            mChargingOffset = mLineWidth*2;
+            mPhoneSignalOffset = 0;
+            mLevelOffset = mLineWidth*3;
+            mPhoneSignalChart.init(0);
+        }
+
+        mBatLevelPath.reset();
+        mBatGoodPath.reset();
+        mBatWarnPath.reset();
+        mBatCriticalPath.reset();
+        mScreenOnPath.reset();
+        mGpsOnPath.reset();
+        mWifiRunningPath.reset();
+        mWakeLockPath.reset();
+        mChargingPath.reset();
+        
+        final long timeStart = mHistStart;
+        final long timeChange = mHistEnd-mHistStart;
+        
+        final int batLow = mBatLow;
+        final int batChange = mBatHigh-mBatLow;
+        
+        final int levelh = h - mLevelOffset - mLevelTop;
+        mLevelBottom = mLevelTop + levelh;
+        
+        int x = 0, y = 0, startX = 0, lastX = -1, lastY = -1;
+        int i = 0;
+        Path curLevelPath = null;
+        Path lastLinePath = null;
+        boolean lastCharging = false, lastScreenOn = false, lastGpsOn = false;
+        boolean lastWifiRunning = false, lastWakeLock = false;
+        final int N = mNumHist;
+        if (mStats.startIteratingHistoryLocked()) {
+            final HistoryItem rec = new HistoryItem();
+            while (mStats.getNextHistoryLocked(rec) && i < N) {
+                if (rec.cmd == BatteryStats.HistoryItem.CMD_UPDATE) {
+                    x = (int)(((rec.time-timeStart)*w)/timeChange);
+                    y = mLevelTop + levelh - ((rec.batteryLevel-batLow)*(levelh-1))/batChange;
+
+                    if (lastX != x) {
+                        // We have moved by at least a pixel.
+                        if (lastY != y) {
+                            // Don't plot changes within a pixel.
+                            Path path;
+                            byte value = rec.batteryLevel;
+                            if (value <= BATTERY_CRITICAL) path = mBatCriticalPath;
+                            else if (value <= BATTERY_WARN) path = mBatWarnPath;
+                            else path = mBatGoodPath;
+
+                            if (path != lastLinePath) {
+                                if (lastLinePath != null) {
+                                    lastLinePath.lineTo(x, y);
+                                }
+                                path.moveTo(x, y);
+                                lastLinePath = path;
+                            } else {
+                                path.lineTo(x, y);
+                            }
+
+                            if (curLevelPath == null) {
+                                curLevelPath = mBatLevelPath;
+                                curLevelPath.moveTo(x, y);
+                                startX = x;
+                            } else {
+                                curLevelPath.lineTo(x, y);
+                            }
+                            lastX = x;
+                            lastY = y;
+                        }
+
+                        final boolean charging =
+                            (rec.states&HistoryItem.STATE_BATTERY_PLUGGED_FLAG) != 0;
+                        if (charging != lastCharging) {
+                            if (charging) {
+                                mChargingPath.moveTo(x, h-mChargingOffset);
+                            } else {
+                                mChargingPath.lineTo(x, h-mChargingOffset);
+                            }
+                            lastCharging = charging;
+                        }
+
+                        final boolean screenOn =
+                            (rec.states&HistoryItem.STATE_SCREEN_ON_FLAG) != 0;
+                        if (screenOn != lastScreenOn) {
+                            if (screenOn) {
+                                mScreenOnPath.moveTo(x, h-mScreenOnOffset);
+                            } else {
+                                mScreenOnPath.lineTo(x, h-mScreenOnOffset);
+                            }
+                            lastScreenOn = screenOn;
+                        }
+
+                        final boolean gpsOn =
+                            (rec.states&HistoryItem.STATE_GPS_ON_FLAG) != 0;
+                        if (gpsOn != lastGpsOn) {
+                            if (gpsOn) {
+                                mGpsOnPath.moveTo(x, h-mGpsOnOffset);
+                            } else {
+                                mGpsOnPath.lineTo(x, h-mGpsOnOffset);
+                            }
+                            lastGpsOn = gpsOn;
+                        }
+
+                        final boolean wifiRunning =
+                            (rec.states&HistoryItem.STATE_WIFI_RUNNING_FLAG) != 0;
+                        if (wifiRunning != lastWifiRunning) {
+                            if (wifiRunning) {
+                                mWifiRunningPath.moveTo(x, h-mWifiRunningOffset);
+                            } else {
+                                mWifiRunningPath.lineTo(x, h-mWifiRunningOffset);
+                            }
+                            lastWifiRunning = wifiRunning;
+                        }
+
+                        final boolean wakeLock =
+                            (rec.states&HistoryItem.STATE_WAKE_LOCK_FLAG) != 0;
+                        if (wakeLock != lastWakeLock) {
+                            if (wakeLock) {
+                                mWakeLockPath.moveTo(x, h-mWakeLockOffset);
+                            } else {
+                                mWakeLockPath.lineTo(x, h-mWakeLockOffset);
+                            }
+                            lastWakeLock = wakeLock;
+                        }
+
+                        if (mLargeMode) {
+                            int bin;
+                            if (((rec.states&HistoryItem.STATE_PHONE_STATE_MASK)
+                                    >> HistoryItem.STATE_PHONE_STATE_SHIFT)
+                                    == ServiceState.STATE_POWER_OFF) {
+                                bin = 0;
+                            } else if ((rec.states&HistoryItem.STATE_PHONE_SCANNING_FLAG) != 0) {
+                                bin = 1;
+                            } else {
+                                bin = (rec.states&HistoryItem.STATE_SIGNAL_STRENGTH_MASK)
+                                        >> HistoryItem.STATE_SIGNAL_STRENGTH_SHIFT;
+                                bin += 2;
+                            }
+                            mPhoneSignalChart.addTick(x, bin);
+                        }
+                    }
+
+                } else if (rec.cmd != BatteryStats.HistoryItem.CMD_OVERFLOW) {
+                    if (curLevelPath != null) {
+                        finishPaths(x+1, h, levelh, startX, lastY, curLevelPath, lastX,
+                                lastCharging, lastScreenOn, lastGpsOn, lastWifiRunning,
+                                lastWakeLock, lastLinePath);
+                        lastX = lastY = -1;
+                        curLevelPath = null;
+                        lastLinePath = null;
+                        lastCharging = lastScreenOn = lastGpsOn = lastWakeLock = false;
+                    }
+                }
+                
+                i++;
+            }
+        }
+        
+        finishPaths(w, h, levelh, startX, lastY, curLevelPath, lastX,
+                lastCharging, lastScreenOn, lastGpsOn, lastWifiRunning,
+                lastWakeLock, lastLinePath);
+    }
+    
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        
+        final int width = getWidth();
+        final int height = getHeight();
+        
+        canvas.drawPath(mBatLevelPath, mBatteryBackgroundPaint);
+        if (mLargeMode) {
+            canvas.drawText(mDurationString, 0, -mTextAscent + (mLineWidth/2),
+                    mTextPaint);
+            canvas.drawText(mTotalDurationString, (width/2) - (mTotalDurationStringWidth/2),
+                    mLevelBottom - mTextAscent + mThinLineWidth, mTextPaint);
+        } else {
+            canvas.drawText(mDurationString, (width/2) - (mDurationStringWidth/2),
+                    (height/2) - ((mTextDescent-mTextAscent)/2) - mTextAscent, mTextPaint);
+        }
+        if (!mBatGoodPath.isEmpty()) {
+            canvas.drawPath(mBatGoodPath, mBatteryGoodPaint);
+        }
+        if (!mBatWarnPath.isEmpty()) {
+            canvas.drawPath(mBatWarnPath, mBatteryWarnPaint);
+        }
+        if (!mBatCriticalPath.isEmpty()) {
+            canvas.drawPath(mBatCriticalPath, mBatteryCriticalPaint);
+        }
+        int top = height-mPhoneSignalOffset - (mLineWidth/2);
+        mPhoneSignalChart.draw(canvas, top, mLineWidth);
+        if (!mScreenOnPath.isEmpty()) {
+            canvas.drawPath(mScreenOnPath, mScreenOnPaint);
+        }
+        if (!mChargingPath.isEmpty()) {
+            canvas.drawPath(mChargingPath, mChargingPaint);
+        }
+        if (mHaveGps) {
+            if (!mGpsOnPath.isEmpty()) {
+                canvas.drawPath(mGpsOnPath, mGpsOnPaint);
+            }
+        }
+        if (mHaveWifi) {
+            if (!mWifiRunningPath.isEmpty()) {
+                canvas.drawPath(mWifiRunningPath, mWifiRunningPaint);
+            }
+        }
+        if (!mWakeLockPath.isEmpty()) {
+            canvas.drawPath(mWakeLockPath, mWakeLockPaint);
+        }
+
+        if (mLargeMode) {
+            canvas.drawText(mPhoneSignalLabel, 0,
+                    height - mPhoneSignalOffset - mTextDescent, mTextPaint);
+            if (mHaveGps) {
+                canvas.drawText(mGpsOnLabel, 0,
+                        height - mGpsOnOffset - mTextDescent, mTextPaint);
+            }
+            if (mHaveWifi) {
+                canvas.drawText(mWifiRunningLabel, 0,
+                        height - mWifiRunningOffset - mTextDescent, mTextPaint);
+            }
+            canvas.drawText(mWakeLockLabel, 0,
+                    height - mWakeLockOffset - mTextDescent, mTextPaint);
+            canvas.drawText(mChargingLabel, 0,
+                    height - mChargingOffset - mTextDescent, mTextPaint);
+            canvas.drawText(mScreenOnLabel, 0,
+                    height - mScreenOnOffset - mTextDescent, mTextPaint);
+            canvas.drawLine(0, mLevelBottom+(mThinLineWidth/2), width,
+                    mLevelBottom+(mThinLineWidth/2), mTextPaint);
+            canvas.drawLine(0, mLevelTop, 0,
+                    mLevelBottom+(mThinLineWidth/2), mTextPaint);
+            for (int i=0; i<10; i++) {
+                int y = mLevelTop + ((mLevelBottom-mLevelTop)*i)/10;
+                canvas.drawLine(0, y, mThinLineWidth*2, y, mTextPaint);
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryDetail.java b/src/com/android/settings/fuelgauge/BatteryHistoryDetail.java
new file mode 100644
index 0000000..c673ce3
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryDetail.java
@@ -0,0 +1,45 @@
+/*
+ * 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.fuelgauge;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.os.Parcel;
+
+import com.android.internal.os.BatteryStatsImpl;
+import com.android.settings.R;
+
+public class BatteryHistoryDetail extends Activity {
+    public static final String EXTRA_STATS = "stats";
+
+    private BatteryStatsImpl mStats;
+
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        byte[] data = getIntent().getByteArrayExtra(EXTRA_STATS);
+        Parcel parcel = Parcel.obtain();
+        parcel.unmarshall(data, 0, data.length);
+        parcel.setDataPosition(0);
+        setContentView(R.layout.preference_batteryhistory);
+        mStats = com.android.internal.os.BatteryStatsImpl.CREATOR
+                .createFromParcel(parcel);
+        BatteryHistoryChart chart = (BatteryHistoryChart)findViewById(
+                R.id.battery_history_chart);
+        chart.setStats(mStats);
+    }
+}
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java b/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java
new file mode 100644
index 0000000..4579db7
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java
@@ -0,0 +1,56 @@
+/*
+ * 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.fuelgauge;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.os.BatteryStats;
+import android.preference.Preference;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.settings.R;
+
+/**
+ * Custom preference for displaying power consumption as a bar and an icon on the left for the
+ * subsystem/app type.
+ *
+ */
+public class BatteryHistoryPreference extends Preference {
+
+    private BatteryStats mStats;
+
+    public BatteryHistoryPreference(Context context, BatteryStats stats) {
+        super(context);
+        setLayoutResource(R.layout.preference_batteryhistory);
+        mStats = stats;
+    }
+
+    BatteryStats getStats() {
+        return mStats;
+    }
+
+    @Override
+    protected void onBindView(View view) {
+        super.onBindView(view);
+
+        BatteryHistoryChart chart = (BatteryHistoryChart)view.findViewById(
+                R.id.battery_history_chart);
+        chart.setStats(mStats);
+    }
+}
diff --git a/src/com/android/settings/fuelgauge/BatterySipper.java b/src/com/android/settings/fuelgauge/BatterySipper.java
new file mode 100644
index 0000000..dbd664a
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/BatterySipper.java
@@ -0,0 +1,200 @@
+/*
+ * 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.fuelgauge;
+
+import com.android.settings.R;
+import com.android.settings.fuelgauge.PowerUsageDetail.DrainType;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.BatteryStats.Uid;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+class BatterySipper implements Comparable<BatterySipper> {
+    final Context mContext;
+    final HashMap<String,UidToDetail> mUidCache = new HashMap<String,UidToDetail>();
+    final ArrayList<BatterySipper> mRequestQueue;
+    final Handler mHandler;
+    String name;
+    Drawable icon;
+    int iconId; // For passing to the detail screen.
+    Uid uidObj;
+    double value;
+    double[] values;
+    DrainType drainType;
+    long usageTime;
+    long cpuTime;
+    long gpsTime;
+    long wifiRunningTime;
+    long cpuFgTime;
+    long wakeLockTime;
+    long tcpBytesReceived;
+    long tcpBytesSent;
+    double percent;
+    double noCoveragePercent;
+    String defaultPackageName;
+
+    static class UidToDetail {
+        String name;
+        String packageName;
+        Drawable icon;
+    }
+
+    BatterySipper(Context context, ArrayList<BatterySipper> requestQueue,
+            Handler handler, String label, DrainType drainType,
+            int iconId, Uid uid, double[] values) {
+        mContext = context;
+        mRequestQueue = requestQueue;
+        mHandler = handler;
+        this.values = values;
+        name = label;
+        this.drainType = drainType;
+        if (iconId > 0) {
+            icon = mContext.getResources().getDrawable(iconId);
+        }
+        if (values != null) value = values[0];
+        if ((label == null || iconId == 0) && uid != null) {
+            getQuickNameIconForUid(uid);
+        }
+        uidObj = uid;
+    }
+
+    double getSortValue() {
+        return value;
+    }
+
+    double[] getValues() {
+        return values;
+    }
+
+    Drawable getIcon() {
+        return icon;
+    }
+
+    public int compareTo(BatterySipper other) {
+        // Return the flipped value because we want the items in descending order
+        return (int) (other.getSortValue() - getSortValue());
+    }
+
+    void getQuickNameIconForUid(Uid uidObj) {
+        final int uid = uidObj.getUid();
+        final String uidString = Integer.toString(uid);
+        if (mUidCache.containsKey(uidString)) {
+            UidToDetail utd = mUidCache.get(uidString);
+            defaultPackageName = utd.packageName;
+            name = utd.name;
+            icon = utd.icon;
+            return;
+        }
+        PackageManager pm = mContext.getPackageManager();
+        final Drawable defaultActivityIcon = pm.getDefaultActivityIcon();
+        String[] packages = pm.getPackagesForUid(uid);
+        icon = pm.getDefaultActivityIcon();
+        if (packages == null) {
+            //name = Integer.toString(uid);
+            if (uid == 0) {
+                name = mContext.getResources().getString(R.string.process_kernel_label);
+            } else if ("mediaserver".equals(name)) {
+                name = mContext.getResources().getString(R.string.process_mediaserver_label);
+            }
+            iconId = R.drawable.ic_power_system;
+            icon = mContext.getResources().getDrawable(iconId);
+            return;
+        } else {
+            //name = packages[0];
+        }
+        synchronized (mRequestQueue) {
+            mRequestQueue.add(this);
+        }
+    }
+
+    /**
+     * Sets name and icon
+     * @param uid Uid of the application
+     */
+    void getNameIcon() {
+        PackageManager pm = mContext.getPackageManager();
+        final int uid = uidObj.getUid();
+        final Drawable defaultActivityIcon = pm.getDefaultActivityIcon();
+        String[] packages = pm.getPackagesForUid(uid);
+        if (packages == null) {
+            name = Integer.toString(uid);
+            return;
+        }
+
+        String[] packageLabels = new String[packages.length];
+        System.arraycopy(packages, 0, packageLabels, 0, packages.length);
+
+        int preferredIndex = -1;
+        // Convert package names to user-facing labels where possible
+        for (int i = 0; i < packageLabels.length; i++) {
+            // Check if package matches preferred package
+            if (packageLabels[i].equals(name)) preferredIndex = i;
+            try {
+                ApplicationInfo ai = pm.getApplicationInfo(packageLabels[i], 0);
+                CharSequence label = ai.loadLabel(pm);
+                if (label != null) {
+                    packageLabels[i] = label.toString();
+                }
+                if (ai.icon != 0) {
+                    defaultPackageName = packages[i];
+                    icon = ai.loadIcon(pm);
+                    break;
+                }
+            } catch (NameNotFoundException e) {
+            }
+        }
+        if (icon == null) icon = defaultActivityIcon;
+
+        if (packageLabels.length == 1) {
+            name = packageLabels[0];
+        } else {
+            // Look for an official name for this UID.
+            for (String pkgName : packages) {
+                try {
+                    final PackageInfo pi = pm.getPackageInfo(pkgName, 0);
+                    if (pi.sharedUserLabel != 0) {
+                        final CharSequence nm = pm.getText(pkgName,
+                                pi.sharedUserLabel, pi.applicationInfo);
+                        if (nm != null) {
+                            name = nm.toString();
+                            if (pi.applicationInfo.icon != 0) {
+                                defaultPackageName = pkgName;
+                                icon = pi.applicationInfo.loadIcon(pm);
+                            }
+                            break;
+                        }
+                    }
+                } catch (PackageManager.NameNotFoundException e) {
+                }
+            }
+        }
+        final String uidString = Integer.toString(uidObj.getUid());
+        UidToDetail utd = new UidToDetail();
+        utd.name = name;
+        utd.icon = icon;
+        utd.packageName = defaultPackageName;
+        mUidCache.put(uidString, utd);
+        mHandler.sendMessage(mHandler.obtainMessage(PowerUsageSummary.MSG_UPDATE_NAME_ICON, this));
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/fuelgauge/PowerGaugePreference.java b/src/com/android/settings/fuelgauge/PowerGaugePreference.java
index 68f294c..ad8c25b 100644
--- a/src/com/android/settings/fuelgauge/PowerGaugePreference.java
+++ b/src/com/android/settings/fuelgauge/PowerGaugePreference.java
@@ -17,9 +17,6 @@
 package com.android.settings.fuelgauge;
 
 import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.ColorFilter;
-import android.graphics.PixelFormat;
 import android.graphics.drawable.Drawable;
 import android.preference.Preference;
 import android.view.View;
@@ -27,7 +24,6 @@
 import android.widget.TextView;
 
 import com.android.settings.R;
-import com.android.settings.fuelgauge.PowerUsageSummary.BatterySipper;
 
 /**
  * Custom preference for displaying power consumption as a bar and an icon on the left for the
diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
index 4db968a..cc112f8 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
@@ -40,9 +40,9 @@
 import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.TextView;
-import com.android.settings.InstalledAppDetails;
-import com.android.settings.ManageApplications;
 import com.android.settings.R;
+import com.android.settings.applications.InstalledAppDetails;
+import com.android.settings.applications.ManageApplications;
 
 public class PowerUsageDetail extends Activity implements Button.OnClickListener {
 
@@ -248,9 +248,9 @@
                 startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
                 break;
             case ACTION_APP_DETAILS:
-                Intent intent = new Intent(Intent.ACTION_VIEW);
+                Intent intent = new Intent(Intent.ACTION_VIEW,
+                        Uri.fromParts("package", mPackages[0], null));
                 intent.setClass(this, InstalledAppDetails.class);
-                intent.putExtra(ManageApplications.APP_PKG_NAME, mPackages[0]);
                 startActivity(intent);
                 break;
             case ACTION_SECURITY_SETTINGS:
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 5678160..e0d614d 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -18,17 +18,13 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.graphics.drawable.Drawable;
 import android.hardware.SensorManager;
 import android.os.BatteryStats;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.os.Parcel;
+import android.os.Process;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemClock;
@@ -53,7 +49,6 @@
 import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -72,11 +67,13 @@
 
     IBatteryStats mBatteryInfo;
     BatteryStatsImpl mStats;
-    private List<BatterySipper> mUsageList = new ArrayList<BatterySipper>();
+    private final List<BatterySipper> mUsageList = new ArrayList<BatterySipper>();
+    private final List<BatterySipper> mWifiSippers = new ArrayList<BatterySipper>();
+    private final List<BatterySipper> mBluetoothSippers = new ArrayList<BatterySipper>();
 
     private PreferenceGroup mAppListGroup;
 
-    private int mStatsType = BatteryStats.STATS_UNPLUGGED;
+    private int mStatsType = BatteryStats.STATS_SINCE_CHARGED;
 
     private static final int MIN_POWER_THRESHOLD = 5;
     private static final int MAX_ITEMS_TO_LIST = 10;
@@ -84,25 +81,24 @@
     private long mStatsPeriod = 0;
     private double mMaxPower = 1;
     private double mTotalPower;
+    private double mWifiPower;
+    private double mBluetoothPower;
     private PowerProfile mPowerProfile;
 
-    private HashMap<String,UidToDetail> mUidCache = new HashMap<String,UidToDetail>();
+    // How much the apps together have left WIFI running.
+    private long mAppWifiRunning;
 
     /** Queue for fetching name and icon for an application */
     private ArrayList<BatterySipper> mRequestQueue = new ArrayList<BatterySipper>();
     private Thread mRequestThread;
     private boolean mAbort;
     
-    static class UidToDetail {
-        String name;
-        String packageName;
-        Drawable icon;
-    }
-
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
+        mStats = (BatteryStatsImpl)getLastNonConfigurationInstance();
+
         addPreferencesFromResource(R.xml.power_usage_summary);
         mBatteryInfo = IBatteryStats.Stub.asInterface(
                 ServiceManager.getService("batteryinfo"));
@@ -111,6 +107,11 @@
     }
 
     @Override
+    public Object onRetainNonConfigurationInstance() {
+        return mStats;
+    }
+
+    @Override
     protected void onResume() {
         super.onResume();
         mAbort = false;
@@ -128,6 +129,18 @@
 
     @Override
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+        if (preference instanceof BatteryHistoryPreference) {
+            Parcel hist = Parcel.obtain();
+            mStats.writeToParcelWithoutUids(hist, 0);
+            byte[] histData = hist.marshall();
+            Intent intent = new Intent(this, BatteryHistoryDetail.class);
+            intent.putExtra(BatteryHistoryDetail.EXTRA_STATS, histData);
+            startActivity(intent);
+            return super.onPreferenceTreeClick(preferenceScreen, preference);
+        }
+        if (!(preference instanceof PowerGaugePreference)) {
+            return false;
+        }
         PowerGaugePreference pgp = (PowerGaugePreference) preference;
         BatterySipper sipper = pgp.getInfo();
         Intent intent = new Intent(this, PowerUsageDetail.class);
@@ -154,7 +167,9 @@
                 types = new int[] {
                     R.string.usage_type_cpu,
                     R.string.usage_type_cpu_foreground,
+                    R.string.usage_type_wake_lock,
                     R.string.usage_type_gps,
+                    R.string.usage_type_wifi_running,
                     R.string.usage_type_data_send,
                     R.string.usage_type_data_recv,
                     R.string.usage_type_audio,
@@ -163,9 +178,11 @@
                 values = new double[] {
                     sipper.cpuTime,
                     sipper.cpuFgTime,
+                    sipper.wakeLockTime,
                     sipper.gpsTime,
-                    uid != null? uid.getTcpBytesSent(mStatsType) : 0,
-                    uid != null? uid.getTcpBytesReceived(mStatsType) : 0,
+                    sipper.wifiRunningTime,
+                    sipper.tcpBytesSent,
+                    sipper.tcpBytesReceived,
                     0,
                     0
                 };
@@ -193,6 +210,44 @@
                 };
             }
             break;
+            case WIFI:
+            {
+                types = new int[] {
+                    R.string.usage_type_wifi_running,
+                    R.string.usage_type_cpu,
+                    R.string.usage_type_cpu_foreground,
+                    R.string.usage_type_wake_lock,
+                    R.string.usage_type_data_send,
+                    R.string.usage_type_data_recv,
+                };
+                values = new double[] {
+                    sipper.usageTime,
+                    sipper.cpuTime,
+                    sipper.cpuFgTime,
+                    sipper.wakeLockTime,
+                    sipper.tcpBytesSent,
+                    sipper.tcpBytesReceived,
+                };
+            } break;
+            case BLUETOOTH:
+            {
+                types = new int[] {
+                    R.string.usage_type_on_time,
+                    R.string.usage_type_cpu,
+                    R.string.usage_type_cpu_foreground,
+                    R.string.usage_type_wake_lock,
+                    R.string.usage_type_data_send,
+                    R.string.usage_type_data_recv,
+                };
+                values = new double[] {
+                    sipper.usageTime,
+                    sipper.cpuTime,
+                    sipper.cpuFgTime,
+                    sipper.wakeLockTime,
+                    sipper.tcpBytesSent,
+                    sipper.tcpBytesReceived,
+                };
+            } break;
             default:
             {
                 types = new int[] {
@@ -226,7 +281,7 @@
     @Override
     public boolean onPrepareOptionsMenu(Menu menu) {
         if (DEBUG) {
-            menu.findItem(MENU_STATS_TYPE).setTitle(mStatsType == BatteryStats.STATS_TOTAL
+            menu.findItem(MENU_STATS_TYPE).setTitle(mStatsType == BatteryStats.STATS_SINCE_CHARGED
                     ? R.string.menu_stats_unplugged
                     : R.string.menu_stats_total);
         }
@@ -237,10 +292,10 @@
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case MENU_STATS_TYPE:
-                if (mStatsType == BatteryStats.STATS_TOTAL) {
-                    mStatsType = BatteryStats.STATS_UNPLUGGED;
+                if (mStatsType == BatteryStats.STATS_SINCE_CHARGED) {
+                    mStatsType = BatteryStats.STATS_SINCE_UNPLUGGED;
                 } else {
-                    mStatsType = BatteryStats.STATS_TOTAL;
+                    mStatsType = BatteryStats.STATS_SINCE_CHARGED;
                 }
                 refreshStats();
                 return true;
@@ -259,14 +314,23 @@
         }
         mMaxPower = 0;
         mTotalPower = 0;
+        mWifiPower = 0;
+        mBluetoothPower = 0;
+        mAppWifiRunning = 0;
 
         mAppListGroup.removeAll();
         mUsageList.clear();
+        mWifiSippers.clear();
+        mBluetoothSippers.clear();
         processAppUsage();
         processMiscUsage();
 
         mAppListGroup.setOrderingAsAdded(false);
 
+        BatteryHistoryPreference hist = new BatteryHistoryPreference(this, mStats);
+        hist.setOrder(-1);
+        mAppListGroup.addPreference(hist);
+        
         Collections.sort(mUsageList);
         for (BatterySipper sipper : mUsageList) {
             if (sipper.getSortValue() < MIN_POWER_THRESHOLD) continue;
@@ -283,7 +347,7 @@
                 pref.setKey(Integer.toString(sipper.uidObj.getUid()));
             }
             mAppListGroup.addPreference(pref);
-            if (mAppListGroup.getPreferenceCount() > MAX_ITEMS_TO_LIST) break;
+            if (mAppListGroup.getPreferenceCount() > (MAX_ITEMS_TO_LIST+1)) break;
         }
         if (DEBUG) setTitle("Battery total uAh = " + ((mTotalPower * 1000) / 3600));
         synchronized (mRequestQueue) {
@@ -330,6 +394,7 @@
             Map<String, ? extends BatteryStats.Uid.Proc> processStats = u.getProcessStats();
             long cpuTime = 0;
             long cpuFgTime = 0;
+            long wakelockTime = 0;
             long gpsTime = 0;
             if (processStats.size() > 0) {
                 // Process CPU time
@@ -357,11 +422,15 @@
                     }
                     cpuTime += tmpCpuTime;
                     power += processPower;
-                    if (highestDrain < processPower) {
+                    if (packageWithHighestDrain == null
+                            || packageWithHighestDrain.startsWith("*")) {
+                        highestDrain = processPower;
+                        packageWithHighestDrain = ent.getKey();
+                    } else if (highestDrain < processPower
+                            && !ent.getKey().startsWith("*")) {
                         highestDrain = processPower;
                         packageWithHighestDrain = ent.getKey();
                     }
-
                 }
                 if (DEBUG) Log.i(TAG, "Max drain of " + highestDrain 
                         + " by " + packageWithHighestDrain);
@@ -374,9 +443,30 @@
             }
             power /= 1000;
 
+            // Process wake lock usage
+            Map<String, ? extends BatteryStats.Uid.Wakelock> wakelockStats = u.getWakelockStats();
+            for (Map.Entry<String, ? extends BatteryStats.Uid.Wakelock> wakelockEntry
+                    : wakelockStats.entrySet()) {
+                Uid.Wakelock wakelock = wakelockEntry.getValue();
+                // Only care about partial wake locks since full wake locks
+                // are canceled when the user turns the screen off.
+                BatteryStats.Timer timer = wakelock.getWakeTime(BatteryStats.WAKE_TYPE_PARTIAL);
+                if (timer != null) {
+                    wakelockTime += timer.getTotalTimeLocked(uSecTime, which);
+                }
+            }
+            wakelockTime /= 1000; // convert to millis
+
             // Add cost of data traffic
-            power += (u.getTcpBytesReceived(mStatsType) + u.getTcpBytesSent(mStatsType))
-                    * averageCostPerByte;
+            long tcpBytesReceived = u.getTcpBytesReceived(mStatsType);
+            long tcpBytesSent = u.getTcpBytesSent(mStatsType);
+            power += (tcpBytesReceived+tcpBytesSent) * averageCostPerByte;
+
+            // Add cost of keeping WIFI running.
+            long wifiRunningTimeMs = u.getWifiRunningTime(uSecTime, which) / 1000;
+            mAppWifiRunning += wifiRunningTimeMs;
+            power += (wifiRunningTimeMs
+                    * mPowerProfile.getAveragePower(PowerProfile.POWER_WIFI_ON)) / 1000;
 
             // Process Sensor usage
             Map<Integer, ? extends BatteryStats.Uid.Sensor> sensorStats = u.getSensorStats();
@@ -406,17 +496,36 @@
                 power += (multiplier * sensorTime) / 1000;
             }
 
+            if (DEBUG) Log.i(TAG, "UID " + u.getUid() + ": power=" + power);
+
             // Add the app to the list if it is consuming power
             if (power != 0) {
-                BatterySipper app = new BatterySipper(packageWithHighestDrain, DrainType.APP, 0, u,
+                BatterySipper app = new BatterySipper(this, mRequestQueue, mHandler,
+                        packageWithHighestDrain, DrainType.APP, 0, u,
                         new double[] {power});
                 app.cpuTime = cpuTime;
                 app.gpsTime = gpsTime;
+                app.wifiRunningTime = wifiRunningTimeMs;
                 app.cpuFgTime = cpuFgTime;
-                mUsageList.add(app);
+                app.wakeLockTime = wakelockTime;
+                app.tcpBytesReceived = tcpBytesReceived;
+                app.tcpBytesSent = tcpBytesSent;
+                if (u.getUid() == Process.WIFI_UID) {
+                    mWifiSippers.add(app);
+                } else if (u.getUid() == Process.BLUETOOTH_GID) {
+                    mBluetoothSippers.add(app);
+                } else {
+                    mUsageList.add(app);
+                }
             }
-            if (power > mMaxPower) mMaxPower = power;
-            mTotalPower += power;
+            if (u.getUid() == Process.WIFI_UID) {
+                mWifiPower += power;
+            } else if (u.getUid() == Process.BLUETOOTH_GID) {
+                mBluetoothPower += power;
+            } else {
+                if (power > mMaxPower) mMaxPower = power;
+                mTotalPower += power;
+            }
             if (DEBUG) Log.i(TAG, "Added power = " + power);
         }
     }
@@ -472,14 +581,34 @@
         }
     }
 
+    private void aggregateSippers(BatterySipper bs, List<BatterySipper> from, String tag) {
+        for (int i=0; i<from.size(); i++) {
+            BatterySipper wbs = from.get(i);
+            if (DEBUG) Log.i(TAG, tag + " adding sipper " + wbs + ": cpu=" + wbs.cpuTime);
+            bs.cpuTime += wbs.cpuTime;
+            bs.gpsTime += wbs.gpsTime;
+            bs.wifiRunningTime += wbs.wifiRunningTime;
+            bs.cpuFgTime += wbs.cpuFgTime;
+            bs.wakeLockTime += wbs.wakeLockTime;
+            bs.tcpBytesReceived += wbs.tcpBytesReceived;
+            bs.tcpBytesSent += wbs.tcpBytesSent;
+        }
+    }
+
     private void addWiFiUsage(long uSecNow) {
         long onTimeMs = mStats.getWifiOnTime(uSecNow, mStatsType) / 1000;
-        long runningTimeMs = mStats.getWifiRunningTime(uSecNow, mStatsType) / 1000;
+        long runningTimeMs = mStats.getGlobalWifiRunningTime(uSecNow, mStatsType) / 1000;
+        if (DEBUG) Log.i(TAG, "WIFI runningTime=" + runningTimeMs
+                + " app runningTime=" + mAppWifiRunning);
+        runningTimeMs -= mAppWifiRunning;
+        if (runningTimeMs < 0) runningTimeMs = 0;
         double wifiPower = (onTimeMs * 0 /* TODO */
                 * mPowerProfile.getAveragePower(PowerProfile.POWER_WIFI_ON)
             + runningTimeMs * mPowerProfile.getAveragePower(PowerProfile.POWER_WIFI_ON)) / 1000;
-        addEntry(getString(R.string.power_wifi), DrainType.WIFI, runningTimeMs,
-                R.drawable.ic_settings_wifi, wifiPower);
+        if (DEBUG) Log.i(TAG, "WIFI power=" + wifiPower + " from procs=" + mWifiPower);
+        BatterySipper bs = addEntry(getString(R.string.power_wifi), DrainType.WIFI, runningTimeMs,
+                R.drawable.ic_settings_wifi, wifiPower + mWifiPower);
+        aggregateSippers(bs, mWifiSippers, "WIFI");
     }
 
     private void addIdleUsage(long uSecNow) {
@@ -497,9 +626,9 @@
         int btPingCount = mStats.getBluetoothPingCount();
         btPower += (btPingCount
                 * mPowerProfile.getAveragePower(PowerProfile.POWER_BLUETOOTH_AT_CMD)) / 1000;
-
-        addEntry(getString(R.string.power_bluetooth), DrainType.BLUETOOTH, btOnTimeMs,
-                R.drawable.ic_settings_bluetooth, btPower);
+        BatterySipper bs = addEntry(getString(R.string.power_bluetooth), DrainType.BLUETOOTH,
+                btOnTimeMs, R.drawable.ic_settings_bluetooth, btPower + mBluetoothPower);
+        aggregateSippers(bs, mBluetoothSippers, "Bluetooth");
     }
 
     private double getAverageDataCost() {
@@ -549,7 +678,8 @@
             double power) {
         if (power > mMaxPower) mMaxPower = power;
         mTotalPower += power;
-        BatterySipper bs = new BatterySipper(label, drainType, iconId, null, new double[] {power});
+        BatterySipper bs = new BatterySipper(this, mRequestQueue, mHandler,
+                label, drainType, iconId, null, new double[] {power});
         bs.usageTime = time;
         bs.iconId = iconId;
         mUsageList.add(bs);
@@ -564,161 +694,12 @@
             parcel.setDataPosition(0);
             mStats = com.android.internal.os.BatteryStatsImpl.CREATOR
                     .createFromParcel(parcel);
+            mStats.distributeWorkLocked(BatteryStats.STATS_SINCE_CHARGED);
         } catch (RemoteException e) {
             Log.e(TAG, "RemoteException:", e);
         }
     }
 
-    class BatterySipper implements Comparable<BatterySipper> {
-        String name;
-        Drawable icon;
-        int iconId; // For passing to the detail screen.
-        Uid uidObj;
-        double value;
-        double[] values;
-        DrainType drainType;
-        long usageTime;
-        long cpuTime;
-        long gpsTime;
-        long cpuFgTime;
-        double percent;
-        double noCoveragePercent;
-        String defaultPackageName;
-
-        BatterySipper(String label, DrainType drainType, int iconId, Uid uid, double[] values) {
-            this.values = values;
-            name = label;
-            this.drainType = drainType;
-            if (iconId > 0) {
-                icon = getResources().getDrawable(iconId);
-            }
-            if (values != null) value = values[0];
-            if ((label == null || iconId == 0) && uid != null) {
-                getQuickNameIconForUid(uid);
-            }
-            uidObj = uid;
-        }
-
-        double getSortValue() {
-            return value;
-        }
-
-        double[] getValues() {
-            return values;
-        }
-
-        Drawable getIcon() {
-            return icon;
-        }
-
-        public int compareTo(BatterySipper other) {
-            // Return the flipped value because we want the items in descending order
-            return (int) (other.getSortValue() - getSortValue());
-        }
-
-        void getQuickNameIconForUid(Uid uidObj) {
-            final int uid = uidObj.getUid();
-            final String uidString = Integer.toString(uid);
-            if (mUidCache.containsKey(uidString)) {
-                UidToDetail utd = mUidCache.get(uidString);
-                defaultPackageName = utd.packageName;
-                name = utd.name;
-                icon = utd.icon;
-                return;
-            }
-            PackageManager pm = getPackageManager();
-            final Drawable defaultActivityIcon = pm.getDefaultActivityIcon();
-            String[] packages = pm.getPackagesForUid(uid);
-            icon = pm.getDefaultActivityIcon();
-            if (packages == null) {
-                //name = Integer.toString(uid);
-                if (uid == 0) {
-                    name = getResources().getString(R.string.process_kernel_label);
-                } else if ("mediaserver".equals(name)) {
-                    name = getResources().getString(R.string.process_mediaserver_label);
-                }
-                iconId = R.drawable.ic_power_system;
-                icon = getResources().getDrawable(iconId);
-                return;
-            } else {
-                //name = packages[0];
-            }
-            synchronized (mRequestQueue) {
-                mRequestQueue.add(this);
-            }
-        }
-
-        /**
-         * Sets name and icon
-         * @param uid Uid of the application
-         */
-        void getNameIcon() {
-            PackageManager pm = getPackageManager();
-            final int uid = uidObj.getUid();
-            final Drawable defaultActivityIcon = pm.getDefaultActivityIcon();
-            String[] packages = pm.getPackagesForUid(uid);
-            if (packages == null) {
-                name = Integer.toString(uid);
-                return;
-            }
-
-            String[] packageLabels = new String[packages.length];
-            System.arraycopy(packages, 0, packageLabels, 0, packages.length);
-
-            int preferredIndex = -1;
-            // Convert package names to user-facing labels where possible
-            for (int i = 0; i < packageLabels.length; i++) {
-                // Check if package matches preferred package
-                if (packageLabels[i].equals(name)) preferredIndex = i;
-                try {
-                    ApplicationInfo ai = pm.getApplicationInfo(packageLabels[i], 0);
-                    CharSequence label = ai.loadLabel(pm);
-                    if (label != null) {
-                        packageLabels[i] = label.toString();
-                    }
-                    if (ai.icon != 0) {
-                        defaultPackageName = packages[i];
-                        icon = ai.loadIcon(pm);
-                        break;
-                    }
-                } catch (NameNotFoundException e) {
-                }
-            }
-            if (icon == null) icon = defaultActivityIcon;
-
-            if (packageLabels.length == 1) {
-                name = packageLabels[0];
-            } else {
-                // Look for an official name for this UID.
-                for (String pkgName : packages) {
-                    try {
-                        final PackageInfo pi = pm.getPackageInfo(pkgName, 0);
-                        if (pi.sharedUserLabel != 0) {
-                            final CharSequence nm = pm.getText(pkgName,
-                                    pi.sharedUserLabel, pi.applicationInfo);
-                            if (nm != null) {
-                                name = nm.toString();
-                                if (pi.applicationInfo.icon != 0) {
-                                    defaultPackageName = pkgName;
-                                    icon = pi.applicationInfo.loadIcon(pm);
-                                }
-                                break;
-                            }
-                        }
-                    } catch (PackageManager.NameNotFoundException e) {
-                    }
-                }
-            }
-            final String uidString = Integer.toString(uidObj.getUid());
-            UidToDetail utd = new UidToDetail();
-            utd.name = name;
-            utd.icon = icon;
-            utd.packageName = defaultPackageName;
-            mUidCache.put(uidString, utd);
-            mHandler.sendMessage(mHandler.obtainMessage(MSG_UPDATE_NAME_ICON, this));
-        }
-    }
-
     public void run() {
         while (true) {
             BatterySipper bs;
@@ -733,7 +714,7 @@
         }
     }
 
-    private static final int MSG_UPDATE_NAME_ICON = 1;
+    static final int MSG_UPDATE_NAME_ICON = 1;
 
     Handler mHandler = new Handler() {
 
diff --git a/src/com/android/settings/nfc/NfcEnabler.java b/src/com/android/settings/nfc/NfcEnabler.java
new file mode 100644
index 0000000..c37c9bb
--- /dev/null
+++ b/src/com/android/settings/nfc/NfcEnabler.java
@@ -0,0 +1,130 @@
+/*
+ * 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.nfc;
+
+import com.android.settings.R;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.nfc.NfcAdapter;
+import android.os.Handler;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.provider.Settings;
+import android.util.Log;
+
+/**
+ * NfcEnabler is a helper to manage the Nfc on/off checkbox preference. It is
+ * turns on/off Nfc and ensures the summary of the preference reflects the
+ * current state.
+ */
+public class NfcEnabler implements Preference.OnPreferenceChangeListener {
+    private static final String TAG = "NfcEnabler";
+
+    private final Context mContext;
+    private final CheckBoxPreference mCheckbox;
+    private final NfcAdapter mNfcAdapter;
+    private final IntentFilter mIntentFilter;
+    private final Handler mHandler = new Handler();
+
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (NfcAdapter.ACTION_ADAPTER_STATE_CHANGE.equals(action)) {
+                handleNfcStateChanged(intent.getBooleanExtra(
+                    NfcAdapter.EXTRA_NEW_BOOLEAN_STATE,
+                    false));
+            }
+        }
+    };
+
+    private boolean mNfcState;
+
+    public NfcEnabler(Context context, CheckBoxPreference checkBoxPreference) {
+        mContext = context;
+        mCheckbox = checkBoxPreference;
+        mNfcAdapter = NfcAdapter.getDefaultAdapter();
+
+        if (mNfcAdapter == null) {
+            // NFC is not supported
+            mCheckbox.setEnabled(false);
+        }
+
+        mIntentFilter = new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGE);
+
+    }
+
+    public void resume() {
+        if (mNfcAdapter == null) {
+            return;
+        }
+        mContext.registerReceiver(mReceiver, mIntentFilter);
+        mCheckbox.setOnPreferenceChangeListener(this);
+        mNfcState = mNfcAdapter.isEnabled();
+        mCheckbox.setChecked(mNfcState);
+    }
+
+    public void pause() {
+        if (mNfcAdapter == null) {
+            return;
+        }
+        mContext.unregisterReceiver(mReceiver);
+        mCheckbox.setOnPreferenceChangeListener(null);
+    }
+
+    public boolean onPreferenceChange(Preference preference, Object value) {
+        // Turn NFC on/off
+
+        final boolean desiredState = (Boolean) value;
+        mCheckbox.setEnabled(false);
+
+        // Start async update of the NFC adapter state, as the API is
+        // unfortunately blocking...
+        new Thread("toggleNFC") {
+            public void run() {
+                Log.d(TAG, "Setting NFC enabled state to: " + desiredState);
+                boolean success = false;
+                if (desiredState) {
+                    success = mNfcAdapter.enable();
+                } else {
+                    success = mNfcAdapter.disable();
+                }
+                if (success) {
+                    Log.d(TAG, "Successfully changed NFC enabled state to " + desiredState);
+                    // UI will be updated by BroadcastReceiver, above.
+                } else {
+                    Log.w(TAG, "Error setting NFC enabled state to " + desiredState);
+                    mHandler.post(new Runnable() {
+                            public void run() {
+                                mCheckbox.setEnabled(true);
+                                mCheckbox.setSummary(R.string.nfc_toggle_error);
+                            }
+                        });
+                }
+            }
+        }.start();
+        return false;
+    }
+
+    private void handleNfcStateChanged(boolean newState) {
+        mCheckbox.setChecked(newState);
+        mCheckbox.setEnabled(true);
+    }
+}
diff --git a/src/com/android/settings/widget/SettingsAppWidgetProvider.java b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
index 939e8e3..8f17e05 100644
--- a/src/com/android/settings/widget/SettingsAppWidgetProvider.java
+++ b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
@@ -23,8 +23,8 @@
 import android.content.ComponentName;
 import android.content.ContentResolver;
 import android.content.Context;
-import android.content.IContentService;
 import android.content.Intent;
+import android.content.SyncStorageEngine;
 import android.content.pm.PackageManager;
 import android.location.LocationManager;
 import android.net.ConnectivityManager;
@@ -68,6 +68,28 @@
     private static final int STATE_UNKNOWN = 4;
     private static final int STATE_INTERMEDIATE = 5;
 
+    // Position in the widget bar, to enable different graphics for left, center and right buttons
+    private static final int POS_LEFT = 0;
+    private static final int POS_CENTER = 1;
+    private static final int POS_RIGHT = 2;
+
+    private static final int[] IND_DRAWABLE_OFF = {
+        R.drawable.appwidget_settings_ind_off_l,
+        R.drawable.appwidget_settings_ind_off_c,
+        R.drawable.appwidget_settings_ind_off_r
+    };
+
+    private static final int[] IND_DRAWABLE_MID = {
+        R.drawable.appwidget_settings_ind_mid_l,
+        R.drawable.appwidget_settings_ind_mid_c,
+        R.drawable.appwidget_settings_ind_mid_r
+    };
+
+    private static final int[] IND_DRAWABLE_ON = {
+        R.drawable.appwidget_settings_ind_on_l,
+        R.drawable.appwidget_settings_ind_on_c,
+        R.drawable.appwidget_settings_ind_on_r
+    };
 
     /**
      * Minimum and maximum brightnesses.  Don't go to 0 since that makes the display unusable
@@ -78,10 +100,12 @@
 
     private static final StateTracker sWifiState = new WifiStateTracker();
     private static final StateTracker sBluetoothState = new BluetoothStateTracker();
+    private static final StateTracker sGpsState = new GpsStateTracker();
+    private static final StateTracker sSyncState = new SyncStateTracker();
 
     /**
-     * The state machine for Wifi and Bluetooth toggling, tracking
-     * reality versus the user's intent.
+     * The state machine for a setting's toggling, tracking reality
+     * versus the user's intent.
      *
      * This is necessary because reality moves relatively slowly
      * (turning on &amp; off radio drivers), compared to user's
@@ -134,6 +158,65 @@
         }
 
         /**
+         * Return the ID of the main large image button for the setting.
+         */
+        public abstract int getButtonId();
+
+        /**
+         * Returns the small indicator image ID underneath the setting.
+         */
+        public abstract int getIndicatorId();
+
+        /**
+         * Returns the resource ID of the image to show as a function of
+         * the on-vs-off state.
+         */
+        public abstract int getButtonImageId(boolean on);
+
+        /**
+         * Returns the position in the button bar - either POS_LEFT, POS_RIGHT or POS_CENTER.
+         */
+        public int getPosition() { return POS_CENTER; }
+
+        /**
+         * Updates the remote views depending on the state (off, on,
+         * turning off, turning on) of the setting.
+         */
+        public final void setImageViewResources(Context context, RemoteViews views) {
+            int buttonId = getButtonId();
+            int indicatorId = getIndicatorId();
+            int pos = getPosition();
+            switch (getTriState(context)) {
+                case STATE_DISABLED:
+                    views.setImageViewResource(buttonId, getButtonImageId(false));
+                    views.setImageViewResource(
+                        indicatorId, IND_DRAWABLE_OFF[pos]);
+                    break;
+                case STATE_ENABLED:
+                    views.setImageViewResource(buttonId, getButtonImageId(true));
+                    views.setImageViewResource(
+                        indicatorId, IND_DRAWABLE_ON[pos]);
+                    break;
+                case STATE_INTERMEDIATE:
+                    // In the transitional state, the bottom green bar
+                    // shows the tri-state (on, off, transitioning), but
+                    // the top dark-gray-or-bright-white logo shows the
+                    // user's intent.  This is much easier to see in
+                    // sunlight.
+                    if (isTurningOn()) {
+                        views.setImageViewResource(buttonId, getButtonImageId(true));
+                        views.setImageViewResource(
+                            indicatorId, IND_DRAWABLE_MID[pos]);
+                    } else {
+                        views.setImageViewResource(buttonId, getButtonImageId(false));
+                        views.setImageViewResource(
+                            indicatorId, IND_DRAWABLE_OFF[pos]);
+                    }
+                    break;
+            }
+        }
+
+        /**
          * Update internal state from a broadcast state change.
          */
         public abstract void onActualStateChange(Context context, Intent intent);
@@ -236,6 +319,16 @@
      * Subclass of StateTracker to get/set Wifi state.
      */
     private static final class WifiStateTracker extends StateTracker {
+        public int getButtonId() { return R.id.img_wifi; }
+        public int getIndicatorId() { return R.id.ind_wifi; }
+        public int getButtonImageId(boolean on) {
+            return on ? R.drawable.ic_appwidget_settings_wifi_on
+                    : R.drawable.ic_appwidget_settings_wifi_off;
+        }
+
+        @Override
+        public int getPosition() { return POS_LEFT; }
+
         @Override
         public int getActualState(Context context) {
             WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
@@ -247,7 +340,8 @@
 
         @Override
         protected void requestStateChange(Context context, final boolean desiredState) {
-            final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+            final WifiManager wifiManager =
+                    (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
             if (wifiManager == null) {
                 Log.d(TAG, "No wifiManager.");
                 return;
@@ -308,6 +402,12 @@
      * Subclass of StateTracker to get/set Bluetooth state.
      */
     private static final class BluetoothStateTracker extends StateTracker {
+        public int getButtonId() { return R.id.img_bluetooth; }
+        public int getIndicatorId() { return R.id.ind_bluetooth; }
+        public int getButtonImageId(boolean on) {
+            return on ? R.drawable.ic_appwidget_settings_bluetooth_on
+                    : R.drawable.ic_appwidget_settings_bluetooth_off;
+        }
 
         @Override
         public int getActualState(Context context) {
@@ -368,6 +468,117 @@
         }
     }
 
+    /**
+     * Subclass of StateTracker for GPS state.
+     */
+    private static final class GpsStateTracker extends StateTracker {
+        public int getButtonId() { return R.id.img_gps; }
+        public int getIndicatorId() { return R.id.ind_gps; }
+        public int getButtonImageId(boolean on) {
+            return on ? R.drawable.ic_appwidget_settings_gps_on
+                    : R.drawable.ic_appwidget_settings_gps_off;
+        }
+
+        @Override
+        public int getActualState(Context context) {
+            ContentResolver resolver = context.getContentResolver();
+            boolean on = Settings.Secure.isLocationProviderEnabled(
+                resolver, LocationManager.GPS_PROVIDER);
+            return on ? STATE_ENABLED : STATE_DISABLED;
+        }
+
+        @Override
+        public void onActualStateChange(Context context, Intent unused) {
+            // Note: the broadcast location providers changed intent
+            // doesn't include an extras bundles saying what the new value is.
+            setCurrentState(context, getActualState(context));
+        }
+
+        @Override
+        public void requestStateChange(final Context context, final boolean desiredState) {
+            final ContentResolver resolver = context.getContentResolver();
+            new AsyncTask<Void, Void, Boolean>() {
+                @Override
+                protected Boolean doInBackground(Void... args) {
+                    Settings.Secure.setLocationProviderEnabled(
+                        resolver,
+                        LocationManager.GPS_PROVIDER,
+                        desiredState);
+                    return desiredState;
+                }
+
+                @Override
+                protected void onPostExecute(Boolean result) {
+                    setCurrentState(
+                        context,
+                        result ? STATE_ENABLED : STATE_DISABLED);
+                    updateWidget(context);
+                }
+            }.execute();
+        }
+    }
+
+    /**
+     * Subclass of StateTracker for sync state.
+     */
+    private static final class SyncStateTracker extends StateTracker {
+        public int getButtonId() { return R.id.img_sync; }
+        public int getIndicatorId() { return R.id.ind_sync; }
+        public int getButtonImageId(boolean on) {
+            return on ? R.drawable.ic_appwidget_settings_sync_on
+                    : R.drawable.ic_appwidget_settings_sync_off;
+        }
+
+        @Override
+        public int getActualState(Context context) {
+            boolean on = getBackgroundDataState(context) &&
+                    ContentResolver.getMasterSyncAutomatically();
+            return on ? STATE_ENABLED : STATE_DISABLED;
+        }
+
+        @Override
+        public void onActualStateChange(Context context, Intent unused) {
+            setCurrentState(context, getActualState(context));
+        }
+
+        @Override
+        public void requestStateChange(final Context context, final boolean desiredState) {
+            final ConnectivityManager connManager =
+                    (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+            final boolean backgroundData = getBackgroundDataState(context);
+            final boolean sync = ContentResolver.getMasterSyncAutomatically();
+
+            new AsyncTask<Void, Void, Boolean>() {
+                @Override
+                protected Boolean doInBackground(Void... args) {
+                    // Turning sync on.
+                    if (desiredState) {
+                        if (!backgroundData) {
+                            connManager.setBackgroundDataSetting(true);
+                        }
+                        if (!sync) {
+                            ContentResolver.setMasterSyncAutomatically(true);
+                        }
+                        return true;
+                    }
+
+                    // Turning sync off
+                    if (sync) {
+                        ContentResolver.setMasterSyncAutomatically(false);
+                    }
+                    return false;
+                }
+
+                @Override
+                protected void onPostExecute(Boolean result) {
+                    setCurrentState(
+                        context,
+                        result ? STATE_ENABLED : STATE_DISABLED);
+                    updateWidget(context);
+                }
+            }.execute();
+        }
+    }
 
     @Override
     public void onUpdate(Context context, AppWidgetManager appWidgetManager,
@@ -442,38 +653,11 @@
      * @param context
      */
     private static void updateButtons(RemoteViews views, Context context) {
-        switch (sWifiState.getTriState(context)) {
-            case STATE_DISABLED:
-                views.setImageViewResource(R.id.img_wifi,
-                                           R.drawable.ic_appwidget_settings_wifi_off);
-                views.setImageViewResource(R.id.ind_wifi,
-                                           R.drawable.appwidget_settings_ind_off_l);
-                break;
-            case STATE_ENABLED:
-                views.setImageViewResource(R.id.img_wifi,
-                                           R.drawable.ic_appwidget_settings_wifi_on);
-                views.setImageViewResource(R.id.ind_wifi,
-                                           R.drawable.appwidget_settings_ind_on_l);
-                break;
-            case STATE_INTERMEDIATE:
-                // In the transitional state, the bottom green bar
-                // shows the tri-state (on, off, transitioning), but
-                // the top dark-gray-or-bright-white logo shows the
-                // user's intent.  This is much easier to see in
-                // sunlight.
-                if (sWifiState.isTurningOn()) {
-                    views.setImageViewResource(R.id.img_wifi,
-                                               R.drawable.ic_appwidget_settings_wifi_on);
-                    views.setImageViewResource(R.id.ind_wifi,
-                                               R.drawable.appwidget_settings_ind_mid_l);
-                } else {
-                    views.setImageViewResource(R.id.img_wifi,
-                                               R.drawable.ic_appwidget_settings_wifi_off);
-                    views.setImageViewResource(R.id.ind_wifi,
-                                               R.drawable.appwidget_settings_ind_off_l);
-                }
-                break;
-        }
+        sWifiState.setImageViewResources(context, views);
+        sBluetoothState.setImageViewResources(context, views);
+        sGpsState.setImageViewResources(context, views);
+        sSyncState.setImageViewResources(context, views);
+
         if (getBrightnessMode(context)) {
             views.setImageViewResource(R.id.img_brightness,
                                        R.drawable.ic_appwidget_settings_brightness_auto);
@@ -490,52 +674,6 @@
             views.setImageViewResource(R.id.ind_brightness,
                                        R.drawable.appwidget_settings_ind_off_r);
         }
-        if (getSync(context)) {
-            views.setImageViewResource(R.id.img_sync, R.drawable.ic_appwidget_settings_sync_on);
-            views.setImageViewResource(R.id.ind_sync, R.drawable.appwidget_settings_ind_on_c);
-        } else {
-            views.setImageViewResource(R.id.img_sync, R.drawable.ic_appwidget_settings_sync_off);
-            views.setImageViewResource(R.id.ind_sync, R.drawable.appwidget_settings_ind_off_c);
-        }
-        if (getGpsState(context)) {
-            views.setImageViewResource(R.id.img_gps, R.drawable.ic_appwidget_settings_gps_on);
-            views.setImageViewResource(R.id.ind_gps, R.drawable.appwidget_settings_ind_on_c);
-        } else {
-            views.setImageViewResource(R.id.img_gps, R.drawable.ic_appwidget_settings_gps_off);
-            views.setImageViewResource(R.id.ind_gps, R.drawable.appwidget_settings_ind_off_c);
-        }
-        switch (sBluetoothState.getTriState(context)) {
-            case STATE_DISABLED:
-                views.setImageViewResource(R.id.img_bluetooth,
-                                           R.drawable.ic_appwidget_settings_bluetooth_off);
-                views.setImageViewResource(R.id.ind_bluetooth,
-                                           R.drawable.appwidget_settings_ind_off_c);
-                break;
-            case STATE_ENABLED:
-                views.setImageViewResource(R.id.img_bluetooth,
-                                           R.drawable.ic_appwidget_settings_bluetooth_on);
-                views.setImageViewResource(R.id.ind_bluetooth,
-                                           R.drawable.appwidget_settings_ind_on_c);
-                break;
-            case STATE_INTERMEDIATE:
-                // In the transitional state, the bottom green bar
-                // shows the tri-state (on, off, transitioning), but
-                // the top dark-gray-or-bright-white logo shows the
-                // user's intent.  This is much easier to see in
-                // sunlight.
-                if (sBluetoothState.isTurningOn()) {
-                    views.setImageViewResource(R.id.img_bluetooth,
-                                               R.drawable.ic_appwidget_settings_bluetooth_on);
-                    views.setImageViewResource(R.id.ind_bluetooth,
-                                               R.drawable.appwidget_settings_ind_mid_c);
-                } else {
-                    views.setImageViewResource(R.id.img_bluetooth,
-                                               R.drawable.ic_appwidget_settings_bluetooth_off);
-                    views.setImageViewResource(R.id.ind_bluetooth,
-                                               R.drawable.appwidget_settings_ind_off_c);
-                }
-                break;
-        }
     }
 
     /**
@@ -565,10 +703,16 @@
     @Override
     public void onReceive(Context context, Intent intent) {
         super.onReceive(context, intent);
-        if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {
+        String action = intent.getAction();
+        if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
             sWifiState.onActualStateChange(context, intent);
-        } else if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())) {
+        } else if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
             sBluetoothState.onActualStateChange(context, intent);
+        } else if (LocationManager.PROVIDERS_CHANGED_ACTION.equals(action)) {
+            sGpsState.onActualStateChange(context, intent);
+        } else if (SyncStorageEngine.SYNC_CONNECTION_SETTING_CHANGED_INTENT.getAction()
+                .equals(action)) {
+            sSyncState.onActualStateChange(context, intent);
         } else if (intent.hasCategory(Intent.CATEGORY_ALTERNATIVE)) {
             Uri data = intent.getData();
             int buttonId = Integer.parseInt(data.getSchemeSpecificPart());
@@ -577,9 +721,9 @@
             } else if (buttonId == BUTTON_BRIGHTNESS) {
                 toggleBrightness(context);
             } else if (buttonId == BUTTON_SYNC) {
-                toggleSync(context);
+                sSyncState.toggleState(context);
             } else if (buttonId == BUTTON_GPS) {
-                toggleGps(context);
+                sGpsState.toggleState(context);
             } else if (buttonId == BUTTON_BLUETOOTH) {
                 sBluetoothState.toggleState(context);
             }
@@ -607,77 +751,6 @@
     }
 
     /**
-     * Gets the state of auto-sync.
-     *
-     * @param context
-     * @return true if enabled
-     */
-    private static boolean getSync(Context context) {
-        boolean backgroundData = getBackgroundDataState(context);
-        boolean sync = ContentResolver.getMasterSyncAutomatically();
-        return backgroundData && sync;
-    }
-
-    /**
-     * Toggle auto-sync
-     *
-     * @param context
-     */
-    private void toggleSync(Context context) {
-        ConnectivityManager connManager =
-                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
-        boolean backgroundData = getBackgroundDataState(context);
-        boolean sync = ContentResolver.getMasterSyncAutomatically();
-
-        // four cases to handle:
-        // setting toggled from off to on:
-        // 1. background data was off, sync was off: turn on both
-        if (!backgroundData && !sync) {
-            connManager.setBackgroundDataSetting(true);
-            ContentResolver.setMasterSyncAutomatically(true);
-        }
-
-        // 2. background data was off, sync was on: turn on background data
-        if (!backgroundData && sync) {
-            connManager.setBackgroundDataSetting(true);
-        }
-
-        // 3. background data was on, sync was off: turn on sync
-        if (backgroundData && !sync) {
-            ContentResolver.setMasterSyncAutomatically(true);
-        }
-
-        // setting toggled from on to off:
-        // 4. background data was on, sync was on: turn off sync
-        if (backgroundData && sync) {
-            ContentResolver.setMasterSyncAutomatically(false);
-        }
-    }
-
-    /**
-     * Gets the state of GPS location.
-     *
-     * @param context
-     * @return true if enabled.
-     */
-    private static boolean getGpsState(Context context) {
-        ContentResolver resolver = context.getContentResolver();
-        return Settings.Secure.isLocationProviderEnabled(resolver, LocationManager.GPS_PROVIDER);
-    }
-
-    /**
-     * Toggles the state of GPS.
-     *
-     * @param context
-     */
-    private void toggleGps(Context context) {
-        ContentResolver resolver = context.getContentResolver();
-        boolean enabled = getGpsState(context);
-        Settings.Secure.setLocationProviderEnabled(resolver, LocationManager.GPS_PROVIDER,
-                !enabled);
-    }
-
-    /**
      * Gets state of brightness.
      *
      * @param context
diff --git a/src/com/android/settings/wifi/WifiApSettings.java b/src/com/android/settings/wifi/WifiApSettings.java
index 0815238..ca1b856 100644
--- a/src/com/android/settings/wifi/WifiApSettings.java
+++ b/src/com/android/settings/wifi/WifiApSettings.java
@@ -120,18 +120,25 @@
 
         if (button == DialogInterface.BUTTON_POSITIVE) {
             mWifiConfig = mDialog.getConfig();
-            if(mWifiConfig != null) {
-                mWifiManager.setWifiApEnabled(mWifiConfig, true);
+            if (mWifiConfig != null) {
+                /**
+                 * if soft AP is running, bring up with new config
+                 * else update the configuration alone
+                 */
+                if (mWifiManager.getWifiApState() == WifiManager.WIFI_AP_STATE_ENABLED) {
+                    mWifiManager.setWifiApEnabled(mWifiConfig, true);
+                    /**
+                     * There is no tether notification on changing AP
+                     * configuration. Update status with new config.
+                     */
+                    mWifiApEnabler.updateConfigSummary(mWifiConfig);
+                } else {
+                    mWifiManager.setWifiApConfiguration(mWifiConfig);
+                }
                 mCreateNetwork.setSummary(String.format(getString(CONFIG_SUBTEXT),
                             mWifiConfig.SSID,
                             mWifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK) ?
                             mSecurityType[WPA_INDEX] : mSecurityType[OPEN_INDEX]));
-                /**
-                 * There is no tether notification on changing AP
-                 * configuration. Update status with new config.
-                 */
-                mWifiApEnabler.updateConfigSummary(mWifiConfig);
-
             }
         }
     }
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index e125128..53bf40f 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -58,4 +58,9 @@
         android:label="Settings Launch Performance">
     </instrumentation>
 
+    <instrumentation android:name="android.test.InstrumentationTestRunner"
+        android:targetPackage="com.android.settings"
+        android:label="Settings Test Cases">
+    </instrumentation>
+
 </manifest>
diff --git a/tests/src/com/android/settings/SettingsLaunchPerformance.java b/tests/src/com/android/settings/tests/SettingsLaunchPerformance.java
similarity index 99%
rename from tests/src/com/android/settings/SettingsLaunchPerformance.java
rename to tests/src/com/android/settings/tests/SettingsLaunchPerformance.java
index 05154e2..225a60b 100644
--- a/tests/src/com/android/settings/SettingsLaunchPerformance.java
+++ b/tests/src/com/android/settings/tests/SettingsLaunchPerformance.java
@@ -26,7 +26,7 @@
  * Instrumentation class for Settings launch performance testing.
  */
 public class SettingsLaunchPerformance extends LaunchPerformanceBase {
- 
+
     public static final String LOG_TAG = "SettingsLaunchPerformance";
 
     public SettingsLaunchPerformance() {
diff --git a/tests/src/com/android/settings/tests/Utf8ByteLengthFilterTest.java b/tests/src/com/android/settings/tests/Utf8ByteLengthFilterTest.java
new file mode 100644
index 0000000..c03f9c0
--- /dev/null
+++ b/tests/src/com/android/settings/tests/Utf8ByteLengthFilterTest.java
@@ -0,0 +1,113 @@
+/*
+ * 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.tests;
+
+import android.test.AndroidTestCase;
+import android.text.InputFilter;
+import android.text.SpannableStringBuilder;
+
+import com.android.settings.bluetooth.BluetoothNamePreference;
+
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+
+@TestTargetClass(BluetoothNamePreference.Utf8ByteLengthFilter.class)
+public class Utf8ByteLengthFilterTest extends AndroidTestCase {
+
+    @TestTargets({
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "filter",
+            args = {java.lang.CharSequence.class, int.class, int.class, android.text.Spanned.class,
+                    int.class, int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "BluetoothNamePreference.Utf8ByteLengthFilter",
+            args = {int.class}
+        )
+    })
+    public void testFilter() {
+        // Define the variables
+        CharSequence source;
+        SpannableStringBuilder dest;
+        // Constructor to create a LengthFilter
+        BluetoothNamePreference.Utf8ByteLengthFilter lengthFilter = new BluetoothNamePreference.Utf8ByteLengthFilter(10);
+        InputFilter[] filters = {lengthFilter};
+
+        // filter() implicitly invoked. If the total length > filter length, the filter will
+        // cut off the source CharSequence from beginning to fit the filter length.
+        source = "abc";
+        dest = new SpannableStringBuilder("abcdefgh");
+        dest.setFilters(filters);
+
+        dest.insert(1, source);
+        String expectedString1 = "aabbcdefgh";
+        assertEquals(expectedString1, dest.toString());
+
+        dest.replace(5, 8, source);
+        String expectedString2 = "aabbcabcgh";
+        assertEquals(expectedString2, dest.toString());
+
+        dest.insert(2, source);
+        assertEquals(expectedString2, dest.toString());
+
+        dest.delete(1, 3);
+        String expectedString3 = "abcabcgh";
+        assertEquals(expectedString3, dest.toString());
+
+        dest.append("12345");
+        String expectedString4 = "abcabcgh12";
+        assertEquals(expectedString4, dest.toString());
+
+        source = "\u60a8\u597d";  // 2 Chinese chars == 6 bytes in UTF-8
+        dest.replace(8, 10, source);
+        assertEquals(expectedString3, dest.toString());
+
+        dest.replace(0, 1, source);
+        String expectedString5 = "\u60a8bcabcgh";
+        assertEquals(expectedString5, dest.toString());
+
+        dest.replace(0, 4, source);
+        String expectedString6 = "\u60a8\u597dbcgh";
+        assertEquals(expectedString6, dest.toString());
+
+        source = "\u00a3\u00a5";  // 2 Latin-1 chars == 4 bytes in UTF-8
+        dest.delete(2, 6);
+        dest.insert(0, source);
+        String expectedString7 = "\u00a3\u00a5\u60a8\u597d";
+        assertEquals(expectedString7, dest.toString());
+
+        dest.replace(2, 3, source);
+        String expectedString8 = "\u00a3\u00a5\u00a3\u597d";
+        assertEquals(expectedString8, dest.toString());
+
+        dest.replace(3, 4, source);
+        String expectedString9 = "\u00a3\u00a5\u00a3\u00a3\u00a5";
+        assertEquals(expectedString9, dest.toString());
+
+        // filter() explicitly invoked
+        dest = new SpannableStringBuilder("abcdefgh");
+        CharSequence beforeFilterSource = "TestLengthFilter";
+        String expectedAfterFilter = "TestLength";
+        CharSequence actualAfterFilter = lengthFilter.filter(beforeFilterSource, 0,
+                beforeFilterSource.length(), dest, 0, dest.length());
+        assertEquals(expectedAfterFilter, actualAfterFilter);
+    }
+}